您的位置:首页 > 其它

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();

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: