GridView-仅在第二页中超出范围

本文关键字:二页 中超 范围 GridView- | 更新日期: 2025-05-08 14:07:35

我正在尝试传递行的索引。。。而且效果很好。。。但我的gridview启用了分页功能,例如,当我在第二页中使用索引时,我会出现超出范围的错误。。但我收到的索引是正确的。例如我第一页4行,第二页4行。。如果我点击第二页的第一项,我得到了索引5……这是正确的。我有8个itens。。。为什么指数5超出了范围?

这是我的代码:

<asp:GridView  ID="GridView1" runat="server" CellPadding="4" 
            BorderStyle="None" BorderWidth="0px" CellSpacing="1" Width="100%" 
                GridLines="Vertical" AllowPaging="True" onrowcommand="GridView1_RowCommand" 
                onselectedindexchanged="GridView1_SelectedIndexChanged" 
                onpageindexchanging="GridView1_PageIndexChanging" 
                onrowdatabound="GridView1_RowDataBound" PageSize="5" HorizontalAlign=Left
                >
                                <PagerStyle HorizontalAlign="Center" />
                                <RowStyle CssClass="tabela_texto2" HorizontalAlign="Center" 
                                    VerticalAlign="Middle" />
                    <AlternatingRowStyle CssClass="tabela_texto1" />
            <Columns>
                <asp:TemplateField>
    <ItemTemplate>
                  <asp:Button Text="Status" CommandName="atender" CommandArgument='<%# Container.DataItemIndex %>' ID="atender" runat="server" OnClientClick="return confirm('Tem certeza que deseja aterar os status?');" />
    </ItemTemplate>
</asp:TemplateField>
                  <asp:TemplateField>
    <ItemTemplate>
                  <asp:Button Text="Ver no mapa" CommandName="ver" CommandArgument='<%# Container.DataItemIndex %>' ID="ver" runat="server"/>
    </ItemTemplate>
</asp:TemplateField>
          <asp:TemplateField>
    <ItemTemplate>
                  <asp:Button Text="Excluir" CommandName="excluir" CommandArgument='<%#((GridViewRow)Container).RowIndex%>' ID="excluir" runat="server" OnClientClick="return confirm('Tem certeza que deseja aterar os status?');" />
    </ItemTemplate>
</asp:TemplateField>

            </Columns>
        </asp:GridView>

出现错误的行是:

   protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            string commandname = e.CommandName;
            int index = int.Parse(e.CommandArgument.ToString());
            if (commandname.Equals("atender"))
            {
                string id = GridView1.Rows[index].Cells[3].Text //this line is getting error. 
}
}

GridView-仅在第二页中超出范围

这可能是一个变通方法:

int index = int.Parse(e.CommandArgument.ToString()) % GridView1.PageSize