如何在DataGrid 控件中实现自定义分页操作

来源:互联网 发布:淘宝阿里妈妈怎么赚钱 编辑:程序博客网 时间:2024/04/27 20:11

   在一般情况下,DataGrid控件每次翻页操作时,都会将数据源中的数据重新调用依次,当数据源中的数据比较多的时候,这样就会浪费系统的资源和降低程序执行的效率,解决的办法就是如同标题所说,依靠自定义实现分页操作.

  前台代码:

    <asp:datagrid id="DataGrid2" runat="server" PageSize="5" AllowPaging="True" AutoGenerateColumns="False" AllowCustomPaging="True">
<Columns>
<asp:BoundColumn DataField="Productid" HeaderText=" Productid"></asp:BoundColumn>
<asp:BoundColumn DataField="Uniqueid" HeaderText="Uniqueid"></asp:BoundColumn>
<asp:BoundColumn DataField="Station" HeaderText="Station"></asp:BoundColumn>
<asp:BoundColumn DataField="Result" HeaderText="Result"></asp:BoundColumn>
</Columns>
<PagerStyle Mode="NumericPages"></PagerStyle>
</asp:datagrid>
<asp:button id="Button2" runat="server" Text="显示Datagrid2中的内容"></asp:button>
 后台代码:
声明全局变量:
int startIndex=0;
private void Button2_Click(object sender, System.EventArgs e)
  {
   DataGridDataBindNew();
  }
  public void DataGridDataBindNew()
  {
   string model="V810";
   OracleConnection  conn=new OracleConnection(StoneFunction.neworacleconn(model));
   OracleDataAdapter OracleDa=new OracleDataAdapter("select productid,uniqueid,station ,result from v810.stationinfo",conn);
   DataSet ds=new DataSet();
  
   try
   {
    OracleDa.Fill(ds,startIndex,DataGrid2.PageSize,"CurDataTable");
    OracleDa.Fill(ds,"AllDataTable");
                DataGrid2.VirtualItemCount=ds.Tables["AllDataTable"].Rows.Count;
    DataGrid2.DataSource=ds.Tables["CurDataTable"];
    DataGrid2.DataBind();
  
    DataGrid2.Visible=true;
   }
   catch
   {
    try
    {
     DataGrid2.CurrentPageIndex=0;
     DataGrid2.DataBind();
     DataGrid2.Visible=true;
    }
    catch
    {
     //this.lblError.Text="No data for selection";
     //this.lblError.Visible=true;
    }
   }
   conn.Close();
   conn.Dispose();
   cmd.Dispose();
  }

  private void DataGrid2_PageIndexChanged(object source, System.Web.UI.WebControls.DataGridPageChangedEventArgs e)
  {
   DataGrid2.CurrentPageIndex=e.NewPageIndex;
   startIndex=DataGrid2.PageSize*DataGrid2.CurrentPageIndex;
   DataGridDataBindNew();
   current_label.Text="当前页:"+DataGrid2.CurrentPageIndex;
  }

原创粉丝点击