使用Datatable进行Gridview分页 - 无法正常工作

时间:2015-05-20 11:08:03

标签: c# asp.net gridview

我有一个gridview,它有分页,但当我点击第2页 - 页面刷新并返回第一页时,页面链接也保留在第1页。

任何帮助都将非常感激:)

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
onpageindexchanging="GridView1_PageIndexChanging"
onrowcommand="GridView1_RowCommand" AutoGenerateColumns="False" 
onrowdatabound="GridView1_RowDataBound">
<Columns> 
<asp:BoundField DataField="Sequence" HeaderText="Sequence" HeaderStyle-  
Width="10%"/>
<asp:TemplateField HeaderStyle-Width="90%">
<ItemTemplate>
<asp:Label ID="lblTitle" runat="server" Text='<%# Eval("Title") %>' Font- 
Strikeout='<%# ((Convert.ToBoolean(Eval("Obsolete")))?true:false) %>' />
</ItemTemplate>
</asp:TemplateField>

代码隐藏: -

private void BuildResults()
{
DataTable dt01 = obSectionDefinition.List(_criteria.AuditDefinitionGUID,    
_criteria.ParentGUID, _criteria.ShowObsolete);

 GridView1.PageSize = 20;
 ViewState["dt_data"] = dt01;
 GridView1.DataSource = dt01;
 GridView1.DataBind();
}

PageIndexChanging: -

public void GridView1_PageIndexChanging(object   
sender,GridViewPageEventArgse)
{
        GridView x = ((GridView)sender);
        GridView1.DataSource = ViewState["dt_data"];


        if (e.NewPageIndex > -1 && e.NewPageIndex <= x.PageCount)
        {
            x.PageIndex = e.NewPageIndex+1;
        }
        else
        {
            e.NewPageIndex--;
        }
   GridView1.DataBind();
}

页面加载: -

 protected void Page_Load(object sender, EventArgs e)
 {
        if (!this.IsPostBack)
        {
               BuildResults();
        }
  }

3 个答案:

答案 0 :(得分:0)

修改PageIndexChanging代码

public void GridView1_PageIndexChanging(object sender,GridViewPageEventArgse)
{
    GridView1.DataSource = (DataTable)ViewState["dt_data"];
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}

答案 1 :(得分:0)

  1. 设置GridView的AllowPaging =“True”属性以启用分页

  2. 设置PageSize属性以提及将显示的记录数 每页。

  3. HTML MARKUP:

     <asp:GridView ID="GridView1" runat="server" AllowPaging="True"   PageSize="20" 
        onpageindexchanging="GridView1_PageIndexChanging"
        onrowcommand="GridView1_RowCommand" AutoGenerateColumns="False" 
        onrowdatabound="GridView1_RowDataBound"> 
    </asp:GridView>
    
    private void BuildResults()
    {
    DataTable dt01 = obSectionDefinition.List(_criteria.AuditDefinitionGUID, _criteria.ParentGUID, _criteria.ShowObsolete);
    
    // GridView1.PageSize = 20;
    // ViewState["dt_data"] = dt01;
     GridView1.DataSource = dt01;
     GridView1.DataBind();
    }
    
    
    public void GridView1_PageIndexChanging(object  sender,GridViewPageEventArgs e)
    {
         GridView1.PageIndex = e.NewPageIndex;
        BuildResults();
    }
    

答案 2 :(得分:0)

我在其他地方的页面上有一个Response.Write,这导致分页失败 - 删除它现在可以正常工作

相关问题