在会话中获取Gridview所选行值时,索引超出范围

本文关键字:索引 范围 会话 获取 Gridview | 更新日期: 2023-09-27 18:09:27

我试图通过GridView中的按钮字段在会话中获得GridView选定行的值,但它给了我一个Index out of range错误:

GridViewRow row = AdminSearchGridView.Rows[index]

注意:目前GridView中只有一行我想从中选择我想要的值

GridView代码:

<asp:GridView ID="AdminSearchGridView" runat="server" AutoGenerateColumns="False"
Style="color: #333333; border-collapse: collapse; font-size: 14px; text-align: center;
width: 1530px; margin-left: 0px; margin-top: 0px" CellPadding="4" ForeColor="#333333"
AutoGenerateDeleteButton="True" DataKeyNames="ID" OnRowDeleting="AdminSearchGridView_RowDeleting"
OnRowCommand="AdminSearchGridView_RowCommand">
    <AlternatingRowStyle BackColor="White" />
    <Columns>
        <asp:ButtonField ButtonType="Button" Text="Issue" CommandName="Issue" />
        <asp:BoundField DataField="IssueStatus" HeaderText="Issue Status" />
        <asp:BoundField DataField="AccessionNo" HeaderText="Accession Number" />
        <asp:BoundField DataField="CallNo" HeaderText="Call Number" />
        <asp:BoundField DataField="Title" HeaderText="Title" />
    </Columns>
</asp:GridView>

而Code Behind是…

protected void AdminSearchGridView_RowCommand(object sender, GridViewCommandEventArgs e)
{
    if(e.CommandName == "Issue")
    {
        int index = Convert.ToInt32(e.CommandArgument);
        GridViewRow row = AdminSearchGridView.Rows[index]; // INDEX OUT OF RANGE ERROR OCCURS HERE
        string accessno = AdminSearchGridView.Rows[index].Cells[3].Text;
        string title = AdminSearchGridView.Rows[index].Cells[5].Text;
        string author = AdminSearchGridView.Rows[index].Cells[6].Text;
        Session["accessno"] = accessno;
        Session["title"] = title;
        Session["author"] = author;
    }
}     

我检查了e.CommandArgument返回int值0,但是我无法弄清楚出了什么问题,因为AdminSearchGridView.Rows[0]是有意义的,因为在GridView中有一行,那么为什么索引超出范围?

在会话中获取Gridview所选行值时,索引超出范围

您的问题似乎是索引超出范围错误不是来自您所标记的行。然而,它来自以下行

string author = AdminSearchGridView.Rows[index].Cells[6].Text;

通过查看您的ASPX代码,有5列声明,还有AutoGenerateDeleteButton="True"这增加了一个列。这意味着总共有6列,所以AdminSearchGridView.Rows[index]. cells[6]。文本必须给出索引超出边界的异常。你能注释这一行并检查这是否解决了问题吗?