【问题标题】:paging in gridview from dataset从数据集中在gridview中分页
【发布时间】:2016-01-05 07:56:53
【问题描述】:

我有一个保存到视图状态的数据集,我想在该数据集上进行分页。

绑定gridview的代码

DataSet _ds = _fOrderInvoice.ExecuteDataSet();
ViewState["FIOrders"] = _ds.Tables[0];
grdInvoiced.DataSource = _ds;  // bind the gridview 

现在我想在 gridview 上分页。那么我如何从我保存到我的ViewState["FIOrders"] 的数据集中做到这一点。我的gridview在下面

     <asp:GridView  ID="grdInvoiced" runat="server" Width="100%" ViewStateMode="Enabled"  DefaultSortColumnName="OrderNo"                                        OnSelectedIndexChanged="GridInvoice_SelectedIndexChanged" AutoGenerateColumns="False" OnSorting="invoice_sorting" OnRowDataBound="grdInvoice_Rowdatabount" ShowFooter="true" PageSize="20" AllowPaging="True" AllowSorting="True" DataKeyNames="OrderNo" ExcelExportFileName="Export_AccountTerms.xls"
 ShowHeaderWhenEmpty="true" OnPageIndexChanging="grdInvoiced_PageIndexChanging">
 <Columns>
    <asp:CommandField ShowSelectButton="True" SelectText="View" />
        <asp:TemplateField>
          <ItemTemplate>
         <asp:CheckBox ID="rbtnSelect" GroupName="a" runat="server" />
         <asp:Literal ID="ltOrder" runat="server" Text='<%# Eval("OrderNo")%>' Visible="false"></asp:Literal>
         </ItemTemplate>
       <HeaderStyle HorizontalAlign="Left" Width="50px" />
     </asp:TemplateField>    
     </Columns>    
    </asp:GridView>

PageIndexChanging 事件

protected void grdInvoiced_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        grdInvoiced.PageIndex = e.NewPageIndex+1;
        if (ViewState["FOrders"] != null)
        {
           DataTable ds = (DataTable)ViewState["FIOrders"];
            grdInvoiced.PageIndex = e.NewPageIndex + 1;
            // Collection<FinalizedOrderInvoiceRows> _rows = ViewState["FIOrders"] as Collection<FinalizedOrderInvoiceRows>;
            grdInvoiced.DataSource = ds;
            grdInvoiced.DataBind();
        }

    }

【问题讨论】:

    标签: c# asp.net gridview pagination


    【解决方案1】:

    将您的ViewState 转换为DataSet 并将Bind 转换为GridView

    protected void grdInvoiced_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grdInvoiced.PageIndex = e.NewPageIndex;
            if (ViewState["FOrders"] != null)
            {
                DataSet ds =(DataSet) ViewState["FIOrders"] ;
                grdInvoiced.DataSource = ds;
                grdInvoiced.DataBind();
            }
    
        }
    

    【讨论】:

    • 这是再次绑定相同的数据
    • @A.Goutam 是的,但它会在下一页显示记录
    • 当我点击第 2 页时,gridview 再次绑定相同的数据
    • 因为我认为我们正在绑定从我们的视图状态中保存的数据集,所以这个网格再次显示相同的数据
    猜你喜欢
    • 1970-01-01
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多