在Gridview中分页不工作第二页数据没有显示asp.net c#

时间:2016-05-16 12:42:53

标签: c# asp.net gridview

目前,点击后我无法查看gridview的第2页。我不确定为什么需要帮助。我按照说明做了 PageIndexChanging ,设置 AllowPaging =“True”,但仍无法解决此问题。

HTML:

protocol SomeProtocol {
    var p1 : String { get set }
}

extension SomeProtocol {
    mutating func configP1(value:String){
        self.p1 = value
    }
}

代码隐藏:

    <asp:GridView ID="SiteGridView" runat="server" CssClass="datagrid" GridLines="Vertical" 
                        AutoGenerateColumns="False" Width="100%" AllowPaging="True" AllowSorting="True" PageSize="10"
                        EnableModelValidation="True" DataKeyNames="promoId"  OnRowCommand="GvPage_RowCommand" 
                        OnPageIndexChanging="GvPage_PageIndexChanging" OnSorting="GvPage_Sorting" onRowdatabound="SiteGridView_RowDataBound">
                        <Columns>                            
                          <asp:TemplateField HeaderText="PromotionId">
                        <ItemTemplate>
                            <asp:Label ID="lblId2" runat="server" Text='<%# Bind("promoId") %>'></asp:Label>
                        </ItemTemplate>
                        <HeaderStyle CssClass="grid_view_hide" />
                        <ItemStyle CssClass="grid_view_hide" />
                    </asp:TemplateField>
                            <asp:TemplateField HeaderText ="Membership Name" SortExpression="name" ItemStyle-Width="50%">
                                <ItemTemplate>
                                    <asp:Label ID="lblSiteName" runat="server" Text='<%# Bind("titlePromo") %>' />
                                </ItemTemplate>
                                <ItemStyle Width="35%" />
                            </asp:TemplateField>
 </Columns>
                    </asp:GridView>

1 个答案:

答案 0 :(得分:0)

首先,建议调试:暂时注释掉所有的复杂性。只需检索启用了分页的简单数据集。如果Paging按预期工作,则开始重新添加复杂性,直到失败。

关于分页

在任何PageIndexChanging事件中都不要这样做:

SiteGridView.PageIndex = e.NewPageIndex;

您正在手动执行服务器控件自动执行的操作。值是那里你可以检查几个条件:

  1. 确定是否需要取消分页事件

    // Is SiteGridView in edit mode
    if( SiteGridView.EditIndex > -1 )
        e.Cancel = true;`
  2. 通过比较确定页面是在当前页面之前还是之后

    if( SiteGridView.PageIndex > e.NewPageIndex)
        // Page Down
    else
        // Page Up
  3. 或者更改为其他某些页面,因为您有一些模糊的分页算法:

    e.NewPageIndex = PageReturnedBySomeObscurePagingAlgorithm();
  4. 关于Page LifeCycle

    在回发期间,就像更改gridview页面时发生的回发一样,Page会在每次回发时运行整个生命周期。

    因此,请确保您没有在多个位置绑定或手动设置可能会改变分页结果的其他gridview控件值。喜欢设置

    `SiteGridView.PageIndex = 1` 
    

    在某些情况下, 生命周期中的PageIndexChanged事件后发生。