首页 > 编程 > .NET > 正文

给datagrid控件建立稳固的双向排序(asp.net)

2024-07-10 13:06:45
字体:
来源:转载
供稿:网友
国内最大的酷站演示中心!

给datagrid控件建立稳固的双向排序(asp.net)
大家都知道datagrid控件带有内置的事件来对记录进行排序,用户可单击列标题,就会按照相应的列进行排序,使用
非常方便和简单化.
但是它也有很大的不足,就是由datagrid代理的分页功能,只能单向排序,而且换页后,排序信息就会丢失.所以我
们需要改进一下分页的事件函数,利用状态包viewstate变量,达到能稳固的双向排序。:)

(1)首先在页面load时.要读取数据源里的数据,并将其送入到datagrid
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();
}
(2)然后在datagrid控件的属性设定中加入如下选项;
...
allowpaging="true"
pagesize=13
pagerstyle-mode=numericpages
onpageindexchanged="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();
}

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表