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

时间:2010-03-15 12:19:09  来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:>     但是它也有很大的不足,就是由datagrid代理的分页功能,只能单向排序,而且换页后,排序信息就会丢失.所以我      们需要改进一下分页的事件函数,利用状态包ViewState变量,达到能稳固的双向排序。:)         (1)首先在页面load时.要读取数据源里的数据,并将其送入到Dat...
  正文:给datagrid控件建立稳固的双向排序(ASP/ target=_blank class=infotextkey>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.Apphotoshop/ target=_blank class=infotextkey>psettings["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();
  }
  
  
  整个完整程序为:
  
  <%@page language="C#"%>
  <%@import namespace="System.Data"%>
  <%@import namespace="System.Data.OleDb"%>
  
  <script language="c#" runat="server"> "给datagrid控件建立稳固的双向排序(asp.net)"由第二电脑网原创提供,转载请注明:http://www.002pc.com/master/College/Programming/aspnet/13240.html


关键字:

关于《给datagrid控件建立稳固的双向排序(asp.net)》文章的评论

站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td