【问题标题】:Gridview paging using Datatable - not working使用 Datatable 的 Gridview 分页 - 不工作
【发布时间】:2015-05-20 11:08:02
【问题描述】:

我有一个带有分页的 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();
        }
  }

【问题讨论】:

  • 为什么要增加 e.NewPageIndex ??

标签: c# asp.net gridview


【解决方案1】:

修改PageIndex更改代码

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

【讨论】:

    【解决方案2】:
    1. 设置 GridView 的 AllowPaging="True" 属性以启用分页

    2. 设置 PageSize 属性以提及将显示多少条记录 每一页。

    HTML 标记:

     <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();
    }
    

    【讨论】:

    • 这也不起作用 - 有些东西阻止了分页工作
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2016-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多