在会话中获取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中有一行,那么为什么索引超出范围?
您的问题似乎是索引超出范围错误不是来自您所标记的行。然而,它来自以下行
string author = AdminSearchGridView.Rows[index].Cells[6].Text;
通过查看您的ASPX代码,有5列声明,还有AutoGenerateDeleteButton="True"这增加了一个列。这意味着总共有6列,所以AdminSearchGridView.Rows[index]. cells[6]。文本必须给出索引超出边界的异常。你能注释这一行并检查这是否解决了问题吗?