我试图通过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超出范围?
答案 0 :(得分:0)
您的问题似乎是索引超出范围错误并非来自您标记的行。但它来自以下一行
string author = AdminSearchGridView.Rows[index].Cells[6].Text;
通过查看您的ASPX代码,声明了5列,并且还有 AutoGenerateDeleteButton =&#34;真&#34;这会增加一列。这意味着共有6列,因此AdminSearchGridView.Rows [index] .Cells [6] .Text必须给索引超出绑定异常。你能评论这一行,看看这是否解决了这个问题?