GridView - 仅在第二页超出范围

GridView -out of range only in second page

我正在尝试传递行的索引...效果很好...但是我的 gridview 启用了分页功能,例如,当我在第二页中使用索引时,我正在退出范围错误..但我收到的索引是正确的。例如..我在第一页有 4 行,在第二页有 4 行..如果我点击第二页的第一项,我得到索引 5...这是正确的。我有 8 个项目...为什么索引 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. 
}
}

这可能是一个解决方法:

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