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更新)!