DataGrid 切换数据源,修改表头,排序,分页,导出
2008-04-09 13:22
405 查看
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.ApplicationBlocks.Data;
namespace headprj
{
public class main : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button Button3;
protected System.Web.UI.WebControls.DataGrid DataGrid2;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.DataGrid1.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid1_SortCommand);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button3.Click += new System.EventHandler(this.Button3_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
ViewState["band"]="1";
Bind();
}
private void Bind()
{
if(ViewState["band"]!=null)
{
string band=ViewState["band"].ToString();
if(band=="1")
{
this.DataGrid1.CurrentPageIndex=0 ; //当前行索引归0
}
}
else
{
this.DataGrid1.CurrentPageIndex=0 ; //当前行索引归0
}
string ConnStr="Server=.;Database=Northwind;uid=sa;pwd=sa";
string dvalue=this.DropDownList1.SelectedItem.Value.ToString();
Session["head"]=dvalue;
string sql="";
if(dvalue=="1")
{
//查询Orders表
sql="select orderid,orderdate,freight,ShipPostalCode from orders";
}
else if(dvalue=="2")
{
//查询Customers表
sql="select CustomerID,Phone from Customers";
}
else if(dvalue=="3")
{
//查询Employees表
sql="select EmployeeID,LastName,FirstName,Title,BirthDate,Address from Employees";
}
else
{
//查询Test表
sql="select *from test";
}
DataSet ds=ds=SqlHelper.ExecuteDataset(ConnStr,CommandType.Text,sql);
Session["Source"]=ds.Tables[0]; //作为排序的数据源
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
Session["Table"]=this.DataGrid1.DataSource as DataView; //作为导出的数据源
}
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
DataTable dt = (DataTable)Session["Source"];
DataView dv = new DataView(dt);
if(ViewState["sort"]==null)
{
ViewState["sort"]=e.SortExpression+" "+"ASC";
}
else
{
if(ViewState["sort"].ToString()==(e.SortExpression+" "+"ASC"))
{
ViewState["sort"]=e.SortExpression+" "+"DESC";
}
else
{
ViewState["sort"]=e.SortExpression+" "+"ASC";
}
}
dv.Sort=ViewState["sort"].ToString();
ViewState["sort"]=dv.Sort; //弊端:多个表有可能字段相同
this.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();
Session["Table"]=this.DataGrid1.DataSource as DataView; //作为导出的数据源
}
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
ViewState["band"]="2";
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
if(Session["Table"]!=null)
{
DataView dv=(DataView)Session["Table"]; // 排序之后 再分页
this.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();
}
else
{
Bind();
}
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
/* 修改表头要在 DataGrid1_ItemDataBound 事件里面 */
if(e.Item.ItemType==ListItemType.Header)
{
if(Session["head"]!=null)
{
string head=Session["head"].ToString();
if(head=="1")
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="订单编号";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="订购日期";
LinkButton lb3=(LinkButton)e.Item.Cells[2].Controls[0];
lb3.Text="重量";
LinkButton lb4=(LinkButton)e.Item.Cells[3].Controls[0];
lb4.Text="邮政编号";
}
else if(head=="2")
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="员工编号";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="电话号码";
}
else if(head=="3")
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="客户编号";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="名";
LinkButton lb3=(LinkButton)e.Item.Cells[2].Controls[0];
lb3.Text="姓";
LinkButton lb4=(LinkButton)e.Item.Cells[3].Controls[0];
lb4.Text="标题";
LinkButton lb5=(LinkButton)e.Item.Cells[4].Controls[0];
lb5.Text="生日";
LinkButton lb6=(LinkButton)e.Item.Cells[5].Controls[0];
lb6.Text="地址";
}
else
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="AAA";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="BBB";
LinkButton lb3=(LinkButton)e.Item.Cells[2].Controls[0];
lb3.Text="CCC";
LinkButton lb4=(LinkButton)e.Item.Cells[3].Controls[0];
lb4.Text="DDD";
}
}
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
// 根据不同的表,转到不同的模板
Response.Redirect("ToExcel.aspx");
}
private void Button3_Click(object sender, System.EventArgs e)
{
if(Session["Table"]!=null)
{
DataView dv=(DataView)Session["Table"];
this.DataGrid2.DataSource=dv;
this.DataGrid2.DataBind();
}
}
}
}
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using Microsoft.ApplicationBlocks.Data;
namespace headprj
{
public class main : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button Button1;
protected System.Web.UI.WebControls.Button Button2;
protected System.Web.UI.WebControls.DataGrid DataGrid1;
protected System.Web.UI.WebControls.Button Button3;
protected System.Web.UI.WebControls.DataGrid DataGrid2;
protected System.Web.UI.WebControls.DropDownList DropDownList1;
private void Page_Load(object sender, System.EventArgs e)
{
}
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.DataGrid1.PageIndexChanged += new System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);
this.DataGrid1.SortCommand += new System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid1_SortCommand);
this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Button2.Click += new System.EventHandler(this.Button2_Click);
this.Button3.Click += new System.EventHandler(this.Button3_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion
private void Button1_Click(object sender, System.EventArgs e)
{
ViewState["band"]="1";
Bind();
}
private void Bind()
{
if(ViewState["band"]!=null)
{
string band=ViewState["band"].ToString();
if(band=="1")
{
this.DataGrid1.CurrentPageIndex=0 ; //当前行索引归0
}
}
else
{
this.DataGrid1.CurrentPageIndex=0 ; //当前行索引归0
}
string ConnStr="Server=.;Database=Northwind;uid=sa;pwd=sa";
string dvalue=this.DropDownList1.SelectedItem.Value.ToString();
Session["head"]=dvalue;
string sql="";
if(dvalue=="1")
{
//查询Orders表
sql="select orderid,orderdate,freight,ShipPostalCode from orders";
}
else if(dvalue=="2")
{
//查询Customers表
sql="select CustomerID,Phone from Customers";
}
else if(dvalue=="3")
{
//查询Employees表
sql="select EmployeeID,LastName,FirstName,Title,BirthDate,Address from Employees";
}
else
{
//查询Test表
sql="select *from test";
}
DataSet ds=ds=SqlHelper.ExecuteDataset(ConnStr,CommandType.Text,sql);
Session["Source"]=ds.Tables[0]; //作为排序的数据源
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
Session["Table"]=this.DataGrid1.DataSource as DataView; //作为导出的数据源
}
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
DataTable dt = (DataTable)Session["Source"];
DataView dv = new DataView(dt);
if(ViewState["sort"]==null)
{
ViewState["sort"]=e.SortExpression+" "+"ASC";
}
else
{
if(ViewState["sort"].ToString()==(e.SortExpression+" "+"ASC"))
{
ViewState["sort"]=e.SortExpression+" "+"DESC";
}
else
{
ViewState["sort"]=e.SortExpression+" "+"ASC";
}
}
dv.Sort=ViewState["sort"].ToString();
ViewState["sort"]=dv.Sort; //弊端:多个表有可能字段相同
this.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();
Session["Table"]=this.DataGrid1.DataSource as DataView; //作为导出的数据源
}
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
ViewState["band"]="2";
this.DataGrid1.CurrentPageIndex=e.NewPageIndex;
if(Session["Table"]!=null)
{
DataView dv=(DataView)Session["Table"]; // 排序之后 再分页
this.DataGrid1.DataSource=dv;
this.DataGrid1.DataBind();
}
else
{
Bind();
}
}
private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
/* 修改表头要在 DataGrid1_ItemDataBound 事件里面 */
if(e.Item.ItemType==ListItemType.Header)
{
if(Session["head"]!=null)
{
string head=Session["head"].ToString();
if(head=="1")
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="订单编号";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="订购日期";
LinkButton lb3=(LinkButton)e.Item.Cells[2].Controls[0];
lb3.Text="重量";
LinkButton lb4=(LinkButton)e.Item.Cells[3].Controls[0];
lb4.Text="邮政编号";
}
else if(head=="2")
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="员工编号";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="电话号码";
}
else if(head=="3")
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="客户编号";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="名";
LinkButton lb3=(LinkButton)e.Item.Cells[2].Controls[0];
lb3.Text="姓";
LinkButton lb4=(LinkButton)e.Item.Cells[3].Controls[0];
lb4.Text="标题";
LinkButton lb5=(LinkButton)e.Item.Cells[4].Controls[0];
lb5.Text="生日";
LinkButton lb6=(LinkButton)e.Item.Cells[5].Controls[0];
lb6.Text="地址";
}
else
{
LinkButton lb1=(LinkButton)e.Item.Cells[0].Controls[0];
lb1.Text="AAA";
LinkButton lb2=(LinkButton)e.Item.Cells[1].Controls[0];
lb2.Text="BBB";
LinkButton lb3=(LinkButton)e.Item.Cells[2].Controls[0];
lb3.Text="CCC";
LinkButton lb4=(LinkButton)e.Item.Cells[3].Controls[0];
lb4.Text="DDD";
}
}
}
}
private void Button2_Click(object sender, System.EventArgs e)
{
// 根据不同的表,转到不同的模板
Response.Redirect("ToExcel.aspx");
}
private void Button3_Click(object sender, System.EventArgs e)
{
if(Session["Table"]!=null)
{
DataView dv=(DataView)Session["Table"];
this.DataGrid2.DataSource=dv;
this.DataGrid2.DataBind();
}
}
}
}
相关文章推荐
- EasyUI Datagrid 分页的情况下实现点击表头的小三角图标对数据库中所有数据重新排序
- [原创]DATAGRID的应用(双向排序,包括checkbox控件,分页,修改,保存,取消)
- DATAGRID的应用(双向排序,包括checkbox控件,分页,修改,保存,取消)
- JS+XMLDOM+XSL:实现中英文界面切换、排序、分页显示、增删改查XML文件数据源
- JS+XMLDOM+XSL:实现中英文界面切换、排序、分页显示、增删改查XML文件数据源
- EasyUI Datagrid 分页的情况下实现点击表头的小三角图标对数据库中所有数据重新排序
- easyui datagrid本地分页排序
- DataGrid的分页和排序 (方法一)
- jQuery EasyUI学习教程之datagrid点击列表头排序
- easyui datagrid 点击表头排序问题
- 创建可分页、可排序的 DataGrid
- GridView实战一:自定义分页、排序、修改、插入、删除
- easyui datagrid 动态修改表头
- C#中DataGrid分页,修改,更新,删除功能的实现
- 让Asp.NET的DataGrid可排序、可选择、可分页
- girdview 增添删改,list数据源排序,分页等操作,代码。
- EasyUI 之 DataGrid分页组件中文显示的两种方法(语言的切换)
- jquery easyui datagrid使用,分页、排序、查询
- Datagrid分页、排序、删除代码
- DataGrid排序、分页、选择