简体   繁体   中英

Gridview paging using Datatable - not working

I have a gridview which has paging but when I click on Page 2 - page refreshes and returns the first page and the page link also remains on page 1.

Any help will be really appreciated :)

<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>

Codebehind:-

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

Page Load:-

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

modify PageIndexChanging code

public void GridView1_PageIndexChanging(object sender,GridViewPageEventArgse)
{
    GridView1.DataSource = (DataTable)ViewState["dt_data"];
    GridView1.PageIndex = e.NewPageIndex;
    GridView1.DataBind();
}
  1. Set AllowPaging=”True” Properties of GridView to enable paging

  2. Set PageSize property to mention how many records will be displayed on each page.

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

我在其他页面上有一个Response.Write,这导致页面调度失败-删除它,现在可以使用了

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM