当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  给datagrid控件建立稳固的双向排序(asp.net)

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

点击次数:23 次 发布日期:2008-11-26 11:15:28 作者:源代码网
源代码网推荐      给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();
源代码网推荐  }
源代码网推荐  
源代码网推荐  
源代码网推荐  整个完整程序为:
源代码网推荐  
源代码网推荐  <%@page language="C#"%>
源代码网推荐  <%@import namespace="System.Data"%>
源代码网推荐  <%@import namespace="System.Data.OleDb"%>
源代码网推荐  
源代码网推荐  <script language="c#" runat="server">
源代码网推荐  
源代码网推荐  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();
源代码网推荐  }
源代码网推荐  </script>
源代码网推荐  
源代码网推荐  <form runat="server">
源代码网推荐  
源代码网推荐  <asp:datagrid id="grid1" runat="server"
源代码网推荐  alternatingitemstyle-backcolor="#feeeee"
源代码网推荐  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"
源代码网推荐  >
源代码网推荐  <columns>
源代码网推荐  
源代码网推荐  <asp:templatecolumn headertext="编号" SortExpression="id">
源代码网推荐  <itemtemplate>
源代码网推荐   <span><%#DataBinder.Eval(Container.DataItem,"id")%></span>
源代码网推荐  </itemtemplate>
源代码网推荐  </asp:templatecolumn>
源代码网推荐  
源代码网推荐  <asp:TemplateColumn HeaderText="用户名" SortExpression="username">
源代码网推荐   <ItemTemplate>
源代码网推荐  <span><%#DataBinder.Eval(Container.DataItem,"username")%></span>
源代码网推荐   </ItemTemplate>
源代码网推荐  </asp:TemplateColumn>
源代码网推荐  
源代码网推荐  <asp:templatecolumn headertext="电话" SortExpression="phone">
源代码网推荐  <itemtemplate>
源代码网推荐   <span><%#DataBinder.Eval(Container.DataItem,"phone")%></span>
源代码网推荐  </itemtemplate>
源代码网推荐  </asp:templatecolumn>
源代码网推荐  
源代码网推荐  <asp:templatecolumn headertext="ip地址" SortExpression="ip_address">
源代码网推荐  <itemtemplate>
源代码网推荐   <span><%#DataBinder.Eval(Container.DataItem,"ip_address")%></span>
源代码网推荐  </itemtemplate>
源代码网推荐  </asp:templatecolumn>
源代码网推荐  
源代码网推荐  </columns>
源代码网推荐  </asp:datagrid>
源代码网推荐  </form>  做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华