給datagrid控制元件建立穩固的雙向排序(asp.net) (轉)
給datagrid建立穩固的雙向排序()
大家都知道DataGrid控制元件帶有內建的事件來對記錄進行排序,可單擊列標題,就會按照相應的列進行排序,使用
非常方便和簡單化.
但是它也有很大的不足,就是由datagrid的分頁功能,只能單向排序,而且換頁後,排序資訊就會丟失.所以我
們需要改進一下分頁的事件,利用狀態包ViewState變數,達到能穩固的雙向排序。:)
(1)首先在頁面load時.要讀取資料來源裡的資料,並將其送入到DataGrid
private void page_load( obj,EventArgs e)
{
if(!Page.IsPostBack)
{
DataLoad();
}
}
private void DataLoad()
{
string connstr=ConfigurationSettings.AppSettings["ConnectionString"];
OleConnection conn=new OleDbConnection(connstr);
DataSet ds=new DataSet();
string ;
if(ViewState["sorting"]==null)
{
sql=" * from userinfo";
Response.Write(sql);
}
else
{
sql="select * from userinfo order by "+ViewState["sorting"].ToString()+"
"+ViewState["sortdirection"].ToString();
Response.Write(sql);
}
OleDbDataAdapter da=new OleDbDataAdapter(sql,conn);
da.Fill(ds);
DataView dv=new DataView(ds.Tables[0]);
grid1.Data=dv;
grid1.DataBind();
}
(2)然後在datagrid控制元件的屬性設定中加入如下選項;
...
allowpaging="true"
pagesize=13
pagerstyle-mode=numericpages
onpageindd="changepage"
...
其中allowpaging="true",表示將啟用分頁功能,每頁的大小,我們設定小一些(pagesize=13),好讓它多分頁.
pagerstyle-mode=numericpages是將分頁設為數字,最後指定了事件的處理為changepage方法.
private void changepage(Object obj,DataGridPageChangedEventArgs e)
{
grid1.CurrentPageIndex=e.NewPageIndex;//當前頁等於新的頁面
DataLoad();
}
(3)最後是排序的事件函式:
private void grid_sort(Object obj,DataGridSortCommandEventArgs e)
{
ViewState.Add("sorting",e.SortExpression);
if (ViewState["sortdirection"]==null)
ViewState.Add("sortdirection","ASC");
else
{
if(ViewState["sortdirection"].ToString()=="ASC")
ViewState["sortdirection"]="DESC";
else
ViewState["sortdirection"]="ASC";
}
DataLoad();
}
整個完整程式為:
< namespace="System.Data"%>
< namespace="System.Data.OleDb"%>
private void page_load(Object obj,EventArgs e)
{
if(!Page.IsPostBack)
{
DataLoad();
}
}
private void DataLoad()
{
string connstr=ConfigurationSettings.AppSettings["ConnectionString"];
OleDbConnection conn=new OleDbConnection(connstr);
DataSet ds=new DataSet();
string sql;
if(ViewState["sorting"]==null)
{
sql="select * from userinfo";
Response.Write(sql);
}
else
{
sql="select * from userinfo order by "+ViewState["sorting"].ToString()+"
"+ViewState["sortdirection"].ToString();
Response.Write(sql);
}
OleDbDataAdapter da=new OleDbDataAdapter(sql,conn);
da.Fill(ds);
DataView dv=new DataView(ds.Tables[0]);
grid1.DataSource=dv;
grid1.DataBind();
}
private void changepage(Object obj,DataGridPageChangedEventArgs e)
{
grid1.CurrentPageIndex=e.NewPageIndex;//當前頁等於新的頁面
DataLoad();
}
private void grid_sort(Object obj,DataGridSortCommandEventArgs e)
{
ViewState.Add("sorting",e.SortExpression);
if (ViewState["sortdirection"]==null)
ViewState.Add("sortdirection","ASC");
else
{
if(ViewState["sortdirection"].ToString()=="ASC")
ViewState["sortdirection"]="DESC";
else
ViewState["sortdirection"]="ASC";
}
DataLoad();
}
ItemStyle-BackColor="#CCCCCC"
AutoGenerateColumns="false"
headerstyle-backcolor="lightyellow"
font-size="10pt"
bordercolor="#999999"
allowpaging="true"
pagesize=13
pagerstyle-mode=numericpages
onpageindexchanged="changepage"
AllowSorting="True"
onsortcommand="grid_sort"
>
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993823/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#中實現DataGrid雙向排序(轉)C#排序
- 實現listview控制元件report檢視下任何列頭的雙向排序 (轉)View控制元件排序
- 建立ASP.NET WEB自定義控制元件(轉)ASP.NETWeb控制元件
- ASP.NET中的DataGrid的屬性 (轉)ASP.NET
- DataGrid控制元件通用列印類. (轉)控制元件
- GridView正反雙向排序View排序
- 將二叉排序樹BST轉換成排序的雙向連結串列排序
- 為DataGrid新增CheckBox控制元件 (轉)控制元件
- 怎麼穩固執行計劃<轉>
- asp.net中DataGrid效能測試 (轉)ASP.NET
- ASP.NET 2.0:棄用 DataGrid 吧,有新的網格控制元件了!ASP.NET控制元件
- ASP.NET URL雙向改寫的實現ASP.NET
- ASP.NET DataGrid的多行提交ASP.NET
- 建立固定表頭、表格體滾動的DataGrid (轉)
- HTTPS連線建立過程(單向&雙向)HTTP
- 雙向連結串列的建立及基本操作
- 建立模板化的ASP.NET 使用者控制元件ASP.NET控制元件
- 排序穩定性排序
- 微軟面試題,將二叉排序樹轉換成雙向連結串列微軟面試題排序
- BFD雙向轉發檢測
- java 雙向證書請求 雙向驗證機制 轉載Java
- asp.net 給button 控制元件 換個背景圖片ASP.NET控制元件
- asp.net mvc easyui datagrid分頁ASP.NETMVCUI
- WPF中Datagrid控制元件新增行號控制元件
- 雙向迴圈連結串列:(建立、插入、遍歷、求長、查詢、刪除、排序、銷燬)待測排序
- ASP.NET驗證控制元件祥解 (轉)ASP.NET控制元件
- 自定義asp.net控制元件分析 (一) (轉)ASP.NET控制元件
- 自定義asp.net控制元件分析(二) (轉)ASP.NET控制元件
- EnableViewState="false"的DataGrid分頁 (轉)ViewFalse
- 給專案管理一雙慧眼1(轉)專案管理
- 給專案管理一雙慧眼2(轉)專案管理
- 給專案管理一雙慧眼3(轉)專案管理
- 給專案管理一雙慧眼4(轉)專案管理
- 建立SWING風格的按鈕控制元件 (轉)控制元件
- 給pb的listview或者treeview控制元件加上背景圖 (轉)View控制元件
- ASP.NET動態建立圖象 (轉)ASP.NET
- ASP.Net中用DataGrid運算元據庫ASP.NET
- Mysql中的雙路排序和單路排序MySql排序