【问题标题】:asp.net c# obout Details Grid get current page Indexasp.net c# obout Details Grid 获取当前页面索引
【发布时间】:2016-04-19 10:13:16
【问题描述】:

我正在使用 obout Grid 并正在创建 Details Grid 我想找出 Details Grid(子 Grid)的当前页面索引 我的网格在下面

<obout:DetailGrid runat="server" ID="GrdCategoryDetails" ForeignKeys="VENDOR_TYPE_LOOKUP_CODE,VENDOR_ID,ORG_ID"
    AllowSorting="false" DataSourceID="vendor_Details" PageSize="10" AllowPaging="true"
    Width="98%" AllowAddingRecords="false" AllowPageSizeSelection="true" AutoGenerateColumns="false"
    ShowCollapsedGroups="false" ShowFooter="true" AllowDataAccessOnServer="true">
    <ScrollingSettings ScrollHeight="250" />
    <Columns>
        <obout:Column DataField="ORG_ID" Visible="false" HeaderText="Org ID" ReadOnly="true"
            Width="0%">
        </obout:Column>
        <obout:Column DataField="VENDOR_ID" Visible="false" HeaderText="Vendor ID" ReadOnly="true"
            Width="0%">
        </obout:Column>
        <obout:Column DataField="VENDOR_TYPE_LOOKUP_CODE" Visible="true" HeaderText="Broker Type"
            ReadOnly="true" Width="33%">
        </obout:Column>
        <obout:Column DataField="OUTSTANDING_AMT" Visible="true" HeaderText="Outstanding Amt"
            HeaderAlign="right" Align="right" ReadOnly="true" Width="33%">
        </obout:Column>
        <obout:Column DataField="OUTSTANDING_REQ_AMT" Visible="true" HeaderText="Outstanding Req Amt"
            HeaderAlign="right" Align="right" Width="33%">
        </obout:Column>
        <%--<obout:Column ID="Column1" AllowEdit="true" HeaderText="Edit" Width="100" runat="server">
        </obout:Column>--%>
    </Columns>
    <DetailGrids>
        <obout:DetailGrid runat="server" ID="GrdvendorDetailsGrid" ForeignKeys="VENDOR_TYPE_LOOKUP_CODE,VENDOR_ID,ORG_ID"
            AutoGenerateColumns="false" AllowSorting="false" DataSourceID="Vendor_Details1" CurrentPageIndex="0"
            OnUpdateCommand="GrdCategoryDetails_UpdateCommand" PageSize="10" AllowPaging="true"
            Width="98%" AllowAddingRecords="false">
            <ClientSideEvents OnClientSelect="Select_Vendor" OnBeforeClientUpdate="validateUpdateAmount"
                OnClientUpdate="onCommand" ExposeSender="true" />
            <Columns>
                <obout:Column DataField="ORG_ID" Visible="false" HeaderText="Org ID" ReadOnly="true"
                    Width="0%">
                </obout:Column>
                <obout:Column DataField="VENDOR_ID" Visible="false" HeaderText="Vendor ID" ReadOnly="true"
                    Width="0%">
                </obout:Column>
                <obout:Column DataField="VENDOR_NAME" Visible="true" HeaderText="Vendor Name" ReadOnly="true"
                    Width="33%">
                </obout:Column>
                <obout:Column DataField="OUTSTANDING_AMT" Visible="true" HeaderText="Outstanding Amt"
                    HeaderAlign="right" Align="right" ReadOnly="true" Width="33%">
                </obout:Column>
                <obout:Column DataField="OUTSTANDING_REQ_AMT" Visible="true" HeaderText="Outstanding Req Amt"
                    HeaderAlign="right" Align="right" Width="33%">
                    <TemplateSettings EditTemplateId="tmpOtAmount" />
                </obout:Column>
                <obout:Column ID="Column1" AllowEdit="true" HeaderText="Edit" Width="100" runat="server">
                </obout:Column>
            </Columns>
            <Templates>
                <obout:GridTemplate runat="server" ID="tmpOtAmount" ControlID="txtOUTSTANDING_REQ_AMT"
                    ControlPropertyName="value">
                    <Template>
                        <obout:OboutTextBox ID="txtOUTSTANDING_REQ_AMT" runat="server" class="ob_gEC" Text="<%# Container.Value %>" />
                        <%--        <input type="text" id="txtOUTSTANDING_REQ_AMT" class="ob_gEC" value="<%# Container.Value %>" />--%>
                    </Template>
                </obout:GridTemplate>
            </Templates>
        </obout:DetailGrid>
    </DetailGrids>
</obout:DetailGrid>

这是我查找详细信息网格的当前页面索引的代码

Session["CurrentPageIndex"] = GrdvendorDetailsGrid.CurrentPageIndex.ToString();

【问题讨论】:

  • 这里到底是什么问题,请你再解释一下。
  • 问题是我们有一个嵌套网格(子网格),如果单击子网格的第 2 页,那么我们希望将页码放入会话中。
  • 以及你得到的错误究竟是什么......
  • 您的代码中是否有任何名为“GrdvendorDetailsGrid”的类?
  • GrdvendorDetailsGrid 是详细信息网格的 ID,如果您看到我的网格代码,那么您会得到它并且没有错误,但我们得到的页面索引号是 0

标签: c# asp.net obout


【解决方案1】:

您可以使用网格的 PageIndexChanging 事件来捕获页面索引并存储在会话中。

protected void GridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
    int PageIndex = e.NewPageIndex;   
}

【讨论】:

    【解决方案2】:

    为了获取当前页面索引,你可以试试这个

            if(HttpContext.Current.Request["myGVPageId"] != null])
            {
                myGridview.PageIndex =  Convert.ToInt32(HttpContext.Current.Request["myGVPageId"]);
            }
    

    更多关于Maintaining GridView current page index after navigating away from Gridview page的帮助

    【讨论】:

    • 你能告诉我Grid_Change是什么吗?
    • 会有一个网格事件,它会调用网格上的任何更改,例如我们更改页面时
    • 所以我们可以在哪里提到它我的意思是在哪个事件上?
    • 您能否确认您的代码的一件事,您是否尝试过再次单击任何其他页面并检查它是否始终给出 0 值。由于 CurrentPageIndex 是一个基于零值的属性,因此它可能第一次选择 0 值。
    • 我认为这个网格与其他网络网格不同,它们只有有限的网格事件。网格上没有任何变化的事件。
    【解决方案3】:

    如果你在前端做分页,就这样做

    <asp:TemplateField HeaderText="#">
        <ItemTemplate>
            <%# (Container.DataItemIndex + 1) + (gvReport.PageSize * gvReport.PageIndex) %>
        </ItemTemplate>
    </asp:TemplateField>
    

    加载 GridView 的 PageSize 和 PageIndex

    【讨论】: