C1GridView具有很多內置的功能,比如排序,過濾,分頁以及分組。
對於開發者來說,這些都是很有用的功能,因為它們可以節省大量通過代碼實現這些能力的時間。
無論如何,開發人員不一定非要將其在設計時綁定到一個數據源。實際上,在大多數情況下,數據是動態綁定的。
本文討論了當C1GridView動態綁定數據時如何實現排序,過濾分頁以及分組。
綁定C1GridView
C1GridView可以綁定到一個ADO.NET數據源,比如說DataSet,DataTable等等。對於本示例,我們將grid綁定到C1NWind.mdb數據庫文件的“Customers”表上。
public DataSet BindGrid() { OleDbConnection con = new OleDbConnection("provider=Microsoft.Jet.Oledb.4.0; Data Source=" + Server.MapPath("~/App_Data/C1NWind.mdb")); OleDbDataAdapter da; DataSet ds = new DataSet(); da = new OleDbDataAdapter("Select * from Customers", con); da.Fill(ds); return ds; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { C1GridView1.DataSource = BindGrid(); C1GridView1.DataBind(); } }
處理C1GridView事件
排序
為了實現排序,我們需要處理Sorting以及Sorted事件。Grid會在Sorted事件中被重新綁定。
protected void C1GridView1_Sorting(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewSortEventArgs e) { } //處理 Sorting protected void C1GridView1_Sorted(object sender, EventArgs e) { C1GridView1.DataSource = BindGrid(); C1GridView1.DataBind(); }
過濾
處理過濾的代碼和處理排序的邏輯完全相同。我們需要處理Filtering 以及Filtered事件。
protected void C1GridView1_Filtering(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewFilterEventArgs e) { } //處理Filtering protected void C1GridView1_Filtered(object sender, EventArgs e) { C1GridView1.DataSource = BindGrid(); C1GridView1.DataBind(); }
分頁
處理分頁的邏輯和處理排序和過濾得邏輯有一點點不同。我們只需要處理Paging事件。首先將G1GridView的PageIndex設置為NewPageIndex,然后就像我們之前所作的那樣,對grid進行重新綁定。
protected void C1GridView1_PageIndexChanging(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewPageEventArgs e) { C1GridView1.PageIndex = e.NewPageIndex; C1GridView1.DataSource = BindGrid(); C1GridView1.DataBind(); }
分組
為了對C1GridView進行分組,需要將AllowColMoving以及ShowGroupArea屬性設置為true。我們還需要處理ColumnGrouped以及ColumnUngrouped事件,並且將ColumnUngrouped事件留空。然而,在ColumnGrouped事件中,我們必須重新綁定grid。不同的是,這次我們需要添加一個參數,這個參數就是正在被拖拽或者分組的列的HeaderText。這個參數首先被用來按照該列進行排序,之后應用分組,以確保不會創建重復分組。
//處理 Column Grouping protected void C1GridView1_ColumnGrouped(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewColumnGroupedEventArgs e) { C1GridView1.DataSource = BindGrid(e.Drag.HeaderText); C1GridView1.DataBind(); } //處理Column UnGrouping protected void C1GridView1_ColumnUngrouped(object sender, C1.Web.Wijmo.Controls.C1GridView.C1GridViewColumnUngroupedEventArgs e) { }
下載示例
Wijmo下載,請進入Studio for ASP.NET Wijmo 2012 v1正式發布(2012.03.22更新)!