DataGrid Web服務器控件提供一種向網格中添加排序功能的途經,可以使用下列這些方法排序
(1) 默認排序:網格中的所有列都可以排序,每列的標頭包含一個LinkButton控件(超級連接),用戶單繫該控件可以按該列進行排序
若要使用默認排序,請設置DataGrid控件的屬性以開啟用所有列的排序.然後在SortCommand事件中創建處理程序執行該排序,設置默認排序可按照如下步驟進行
1,在設計視圖中,選擇DataGrid控件,然後單繫屬性窗口底部的屬性生成器連接
2,在DataGrid屬性對話框中,單繫常規選項卡
3,將網格的AllowSorting屬性設置為True
4,運行時,所有的列標頭,自動呈現為LinkButton控件.當用戶單繫列表頭時,該列的綁定字段的名稱作為排序關鍵字傳遞
(2),自定義排序,定義可將那些列排序以及用戶單繫該列標頭中什麼類型的按鈕進行排序
自定義排序是在網格中定義綁定列和模板列,並在SortCommand事件中編寫代碼,以排序數據.設置自定義排序可按照如下步驟進行.
1,在設計視圖中,選擇DataGrid控件,然後單繫屬性窗口底部的屬性生成器連接,
2,在DataGrid屬性對話框,單繫常規選項卡
3,在行為部分,選擇允許排序框,然後切換到列選項卡
4,向 DataGrid控件中添加綁定列和模板列的任意組合
5,若要啟動列的排序,請為該列 排序表達式 輸入值 通常是該列要綁定到的數據字段的名稱
6,為SortCommand事件添加處理程序.
代碼︰
private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程式碼以初始化網頁
if(!IsPostBack)
{
//設置排序表達式
ViewState["SortOrder"]="nt";
//設置排序的升降序
ViewState["OrderDire"]="ASC";
//數據綁定
DataGridDataBind();
}
}
private void DataGridDataBind()
{
//定義數據庫
string sql="select 中文姓名,nt,部門名稱 from elogin1";
SqlConnection conn=new SqlConnection(ConfigurationSettings.AppSettings["connstr"].ToString());
SqlDataAdapter da=new SqlDataAdapter(sql,conn);
DataSet ds=new DataSet();
try
{
da.Fill(ds,"elogin1");
//取得填充表格的默認視圖
DataView view=ds.Tables["elogin1"].DefaultView;
//設置排序關鍵字
string sort=(string)ViewState["SortOrder"]+" "+(string)ViewState["OrderDire"];
//設置排序表達式
view.Sort= sort;
//數據綁定
this.DataGrid1.DataSource=view;
this.DataGrid1.DataBind();
}
catch(Exception error)
{
Response.Write(error.ToString());
}
}
//DataGrid控件的分頁事件
private void DataGrid1_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
{
//設置DataGrid的當前顯示頁的索引值為選擇的頁面索引值
this.DataGrid1.CurrentPageIndex =e.NewPageIndex;
DataGridDataBind();
}
//DataGrid控件的排序事件
private void DataGrid1_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e)
{
//取得排序的表達式
string vortexp=e.SortExpression;
//如果是當前的表達式
if(ViewState["SortOrder"].ToString()==vortexp)
{
//如果原來是降序則改為升序,反之
if((string)ViewState["OrderDire"]=="Desc")
ViewState["OrderDire"]="ASC";
else
ViewState["OrderDire"]="Desc";
}
else
{
//重新設置排序關鍵字
ViewState["SortOrder"]=e.SortExpression;
}
DataGridDataBind();
}
}