CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

datagrid中排序与分页遇到的问题

楼主fog25(fog)2004-02-04 00:34:08 在 .NET技术 / ASP.NET 提问

我的原始记录是这样的:6,5,4,3,2,1  
   
   
  我用datagrid的排序功能(在标题有下划线那种),那么datagrid显示1,2,3,4,5.6,这很正常。问题是这样的,当我用普通的分页(非自定义)和普通的排序,在datagrid中如果按下分页(例如第二页),datagrid就以我的原始记录的顺序显示,即6,5,4,3,2,1.请问这是怎么会事?  
  源代码如下  
   
    Dim   connection1   As   OleDbConnection  
          Dim   startIndex   As   Integer  
          Dim   SORTFIELD   As   String  
          Dim   Provider   =   "Microsoft.Jet.OLEDB.4.0;"  
          Dim   DataBase   =   Server.MapPath("human   source.mdb")  
          Dim   ConnStr   =   "Provider="   +   Provider   +   "Data   Source="   +   DataBase  
          Dim   dataset1   As   DataSet   =   New   DataSet()  
          Dim   listboxtext   As   String  
          Dim   cookiestring   As   String  
          Dim   Cmd   As   OleDbDataAdapter  
          Dim   delcomm   As   OleDbCommand  
          Dim   updatecomm   As   OleDbCommand  
   
   
          Protected   WithEvents   Grid1   As   System.Web.UI.WebControls.DataGrid  
       
          Dim   insertcomm   As   OleDbCommand  
   
          Private   Sub   Page_Load(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   MyBase.Load  
   
   
                  If   Not   IsPostBack   Then  
                          startIndex   =   0  
                          SORTFIELD   =   "class_department"  
                          BindGrid()  
                           
   
                  End   If  
          End   Sub  
   
          Sub   BindGrid()  
                  connection1   =   New   OleDbConnection(ConnStr)  
                  connection1.Open()  
                  Dim   Cmd   As   OleDbDataAdapter  
                  Cmd   =   New   OleDbDataAdapter("Select   *   From   教务部门名",   connection1)  
                  Dim   dataset1   As   DataSet   =   New   DataSet()  
                  Cmd.Fill(dataset1,   "教务部门名")  
                  Dim   dataview1   As   DataView   =   New   DataView(dataset1.Tables("教务部门名"))  
                  dataview1.Sort   =   SORTFIELD  
                  Grid1.DataSource   =   dataview1  
                  Grid1.DataBind()  
                  connection1.Close()  
                   
          End   Sub  
   
        Private   Sub   Grid1_PageIndexChanged(ByVal   source   As   Object,   ByVal   e   As   System.Web.UI.WebControls.DataGridPageChangedEventArgs)   Handles   Grid1.PageIndexChanged   '处理分页代码  
                  startIndex   =   e.NewPageIndex   *   Grid1.PageSize  
                  Grid1.CurrentPageIndex   =   e.NewPageIndex  
   
                  BindGrid()  
          End   Sub  
   
          Private   Sub   Grid1_SortCommand(ByVal   source   As   Object,   ByVal   e   As   System.Web.UI.WebControls.DataGridSortCommandEventArgs)   Handles   Grid1.SortCommand   '处理排序代码  
                  SORTFIELD   =   e.SortExpression  
                  BindGrid()  
          End   Sub  
   
   
   
   
   
   
   
   
   
  问题点数:0、回复次数:5Top

1 楼xubinhui(东方未名)回复于 2004-03-24 17:39:08 得分 0

你给一个例子:  
  <%@   Page   language="c#"   Codebehind="DataGrid分页排序.aspx.cs"   AutoEventWireup="false"   Inherits="StudyDotNet.DataGrid.DataGrid分页排序"   %>  
  <!DOCTYPE   HTML   PUBLIC   "-//W3C//DTD   HTML   4.0   Transitional//EN"   >  
  <HTML>  
  <HEAD>  
  <title>DataGrid分页排序</title>  
  <meta   content="Microsoft   Visual   Studio   .NET   7.1"   name="GENERATOR">  
  <meta   content="C#"   name="CODE_LANGUAGE">  
  <meta   content="JavaScript"   name="vs_defaultClientScript">  
  <meta   content="http://schemas.microsoft.com/intellisense/ie5"   name="vs_targetSchema">  
  </HEAD>  
  <body   MS_POSITIONING="GridLayout">  
  <!--************************问题描述区************************-->  
  <table   width="100%"   border="0">  
  <tr>  
  <td   style="COLOR:   red"   align="center"><b>排序后再翻页的问题</b></td>  
  </tr>  
  <tr>  
  <td><b>出处:</b><A   href="http://expert.csdn.net/Expert/topic/2865/2865760.xml?temp=.477627">http://expert.csdn.net/Expert/topic/2865/2865760.xml?temp=.477627</A></td>  
  </tr>  
  <tr>  
  <td><b>描述:</b>在点字段的排序后,然后再翻页,排序的顺序就乱了  
  </td>  
  </tr>  
  </table>  
  <hr>  
  <!--************************问题描述区(完)************************-->  
  <form   id="Form1"   method="post"   runat="server">  
  <asp:datagrid   id="DataGrid1"   runat="server"   Width="100%"   AutoGenerateColumns="False"   AllowPaging="True"  
  PageSize="4"   DataKeyField="ID"   AllowSorting="True">  
  <Columns>  
  <asp:BoundColumn   DataField="ID"   SortExpression="ID"   HeaderText="编号"></asp:BoundColumn>  
  <asp:BoundColumn   DataField="Name"   SortExpression="Name"   HeaderText="姓名"></asp:BoundColumn>  
  <asp:BoundColumn   DataField="Sex"   SortExpression="Sex"   HeaderText="性别"></asp:BoundColumn>  
  <asp:BoundColumn   DataField="Birthday"   SortExpression="Birthday"   HeaderText="生日"></asp:BoundColumn>  
  <asp:BoundColumn   DataField="NativePlace"   SortExpression="NativePlace"   HeaderText="籍贯"></asp:BoundColumn>  
  <asp:BoundColumn   DataField="Bursary"   SortExpression="Bursary"   HeaderText="奖学金"></asp:BoundColumn>  
  </Columns>  
  </asp:datagrid>  
  </form>  
  </body>  
  </HTML>  
  Top

2 楼xubinhui(东方未名)回复于 2004-03-24 17:39:33 得分 0

using   System;  
  using   System.Collections;  
  using   System.ComponentModel;  
  using   System.Data;  
  using   System.Drawing;  
  using   System.Web;  
  using   System.Web.SessionState;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
   
  namespace   StudyDotNet.DataGrid  
  {  
  ///   <summary>  
  ///   DataGrid分页排序   的摘要说明。  
  ///   </summary>  
  public   class   DataGrid分页排序   :   System.Web.UI.Page  
  {  
  protected   System.Web.UI.WebControls.Label   lblOrderBy;  
  protected   System.Web.UI.WebControls.DataGrid   dtgCusts;  
  #region   控件申明  
  protected   System.Web.UI.WebControls.DataGrid   DataGrid1;  
  #endregion    
   
  #region   Page_Load  
  private   void   Page_Load(object   sender,   System.EventArgs   e)  
  {  
  //   在此处放置用户代码以初始化页面  
  if(!Page.IsPostBack)   BindData();  
  }  
   
  #endregion    
   
  #region   数据绑定  
  private   void   BindData()  
  {  
  DataView   dv   =new   DataView();  
  dv   =   CreateDataSource().DefaultView;  
  if   (ViewState["SortExpression"]!=null)  
  {  
  dv.Sort   =   ViewState["SortExpression"].ToString();  
  }  
  DataGrid1.DataSource   =   dv;  
  DataGrid1.DataBind();  
  }  
   
  private   DataTable   CreateDataSource()  
  {  
  //学号、姓名、性别、生日、籍贯、联系号码、奖学金、照片  
  DataTable   dt   =   new   DataTable();  
  dt.Columns.Add("ID");  
  dt.Columns.Add("Name");  
  dt.Columns.Add("Sex");  
  dt.Columns.Add("Birthday");  
  dt.Columns.Add("NativePlace");  
  dt.Columns.Add("Tel");  
  dt.Columns.Add("Bursary");  
  dt.Columns.Add("Photo");  
  dt.Rows.Add(new   object[]   {"200403240000","风","男","1981-10-12","江西省","13870626580","500","Photo\\Photo200403240000.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240001","云","女","1981-11-15","北京市","13870626581","300","Photo\\Photo200403240001.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240002","冰","男","1980-01-23","江西省","13870626582","1500","Photo\\Photo200403240002.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240003","雨","女","1982-10-21","上海市","13870626583","5000","Photo\\Photo200403240003.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240004","秦始皇","男","1981-10-12","江西省","13870626584","0","Photo\\Photo200403240004.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240005","李世民","男","1981-10-12","上海市","13870626585","50","Photo\\Photo200403240005.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240006","武则天","女","1981-10-12","北京市","13870626586","500","Photo\\Photo200403240006.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240007","拿破仑","男","1981-10-12","上海市","13870626587","600","Photo\\Photo200403240007.jpg"});  
  dt.Rows.Add(new   object[]   {"200403240008","希特勒","男","1981-10-12","江西省","13870626588","5000","Photo\\Photo200403240008.jpg"});  
  return   dt;  
  }  
  #endregion    
   
  #region   Web   窗体设计器生成的代码  
  override   protected   void   OnInit(EventArgs   e)  
  {  
  //  
  //   CODEGEN:   该调用是   ASP.NET   Web   窗体设计器所必需的。  
  //  
  InitializeComponent();  
  base.OnInit(e);  
  }  
   
  ///   <summary>  
  ///   设计器支持所需的方法   -   不要使用代码编辑器修改  
  ///   此方法的内容。  
  ///   </summary>  
  private   void   InitializeComponent()  
  {          
  this.DataGrid1.PageIndexChanged   +=   new   System.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGrid1_PageIndexChanged);  
  this.DataGrid1.SortCommand   +=   new   System.Web.UI.WebControls.DataGridSortCommandEventHandler(this.DataGrid1_SortCommand);  
  this.Load   +=   new   System.EventHandler(this.Page_Load);  
   
  }  
  #endregion  
   
  #region   DataGrid事件  
  private   void   DataGrid1_PageIndexChanged(object   source,   System.Web.UI.WebControls.DataGridPageChangedEventArgs   e)  
  {  
  DataGrid1.CurrentPageIndex   =e.NewPageIndex;  
  BindData();  
  }  
   
  private   void   DataGrid1_SortCommand(object   source,   System.Web.UI.WebControls.DataGridSortCommandEventArgs   e)  
  {  
  ViewState["SortExpression"]   =   e.SortExpression.ToString();  
  BindData();  
  }  
  #endregion    
  }  
  }  
  Top

相关问题

  • datagrid的排序及分页问题
  • DataGrid分页遇到的奇怪问题
  • Datagrid分页时遇到的问题。
  • 关于datagrid的分页与排序共存的问题???
  • 在DataGrid中同时实现分页和排序时的问题。
  • 请问datagrid即可排序,又可分页如何做?
  • 请问用DataGrid如何使分页跟排序同时进行?
  • 分页后继续排序..
  • DataGrid加入分页和排序就出错,不知道什么原因.
  • DataGrid的分页

关键词

  • 排序
  • 翻页
  • 问题

得分解答快速导航

  • 帖主:fog25

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo