在Session中选择Gridview选择的行值时,索引超出范围

时间:2014-06-20 10:40:52

标签: c# asp.net aspxgridview

我试图通过GridView中的按钮字段获取会话中GridView所选行的值,但它在{+ p>}处出现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>

而代码背后是......

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中有一行,那么为什么Index超出范围?

1 个答案:

答案 0 :(得分:0)

您的问题似乎是索引超出范围错误并非来自您标记的行。但它来自以下一行

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

通过查看您的ASPX代码,声明了5列,并且还有 AutoGenerateDeleteButton =&#34;真&#34;这会增加一列。这意味着共有6列,因此AdminSearchGridView.Rows [index] .Cells [6] .Text必须给索引超出绑定异常。你能评论这一行,看看这是否解决了这个问题?