Asp.net 使用GridView时,使用自定义选择按钮时,SelectedIndex始终为0
单击gvSquid2中的“选择”按钮时,x将获得一个有效且正确的值。单击gvSquid中的select按钮时,我得到ArgumentOutOfRange异常,因为gv.Asp.net 使用GridView时,使用自定义选择按钮时,SelectedIndex始终为0,asp.net,gridview,selectedindex,commandfield,datakey,Asp.net,Gridview,Selectedindex,Commandfield,Datakey,单击gvSquid2中的“选择”按钮时,x将获得一个有效且正确的值。单击gvSquid中的select按钮时,我得到ArgumentOutOfRange异常,因为gv.SelectedIndex=0。此外,gv.SelectedDataKey为空。如何获取DataKey信息?将其放入列中是不可接受的,因为它必须对用户隐藏。隐藏列是无用的,因为在DataBind()期间,该值被丢弃。我从微软的网站上摘取了这个例子。我错过了什么 <asp:gridview ID="gvSquid2" Data
SelectedIndex
=0。此外,gv.SelectedDataKey
为空。如何获取DataKey
信息?将其放入列中是不可接受的,因为它必须对用户隐藏。隐藏列是无用的,因为在DataBind()
期间,该值被丢弃。我从微软的网站上摘取了这个例子。我错过了什么
<asp:gridview ID="gvSquid2" DataSourceID="dsComments" AutoGenerateColumns="false" AutoGenerateSelectButton="true" DataKeyNames="ID" OnSelectedIndexChanged="gvSquid_SelectedIndexChanged" runat="server" EnableViewState="false">
<Columns>
<asp:BoundField DataField="Date" ReadOnly="true" HeaderText="Date" SortExpression="Date" />
<asp:BoundField DataField="Comment" ReadOnly="true" HeaderText="Comment" SortExpression="Comment" />
<asp:BoundField DataField="Username" ReadOnly="true" HeaderText="User" SortExpression="Username" />
</Columns>
</asp:gridview>
<asp:gridview ID="gvSquid" DataSourceID="dsComments" AutoGenerateColumns="false" DataKeyNames="ID" OnSelectedIndexChanged="gvSquid_SelectedIndexChanged" runat="server" EnableViewState="false">
<Columns>
<asp:CommandField ButtonType="Image" HeaderText="Select" ShowSelectButton="true" SelectImageUrl="~/includes/RedX.jpg" />
<asp:BoundField DataField="Date" ReadOnly="true" HeaderText="Date" SortExpression="Date" />
<asp:BoundField DataField="Comment" ReadOnly="true" HeaderText="Comment" SortExpression="Comment" />
<asp:BoundField DataField="Username" ReadOnly="true" HeaderText="User" SortExpression="Username" />
</Columns>
</asp:gridview>
protected void gvSquid_SelectedIndexChanged(object sender, EventArgs e) {
string x;
x = gvSquid.DataKeys[gvSquid.SelectedIndex].Value.ToString();
}
受保护的无效gvSquid\u SelectedIndexChanged(对象发送方,事件参数e){
字符串x;
x=gvSquid.DataKeys[gvSquid.SelectedIndex].Value.ToString();
}
尝试使用网格视图的SelectedRow
进入行索引,如下所示:
protected void gvSquid_SelectedIndexChanged(object sender, EventArgs e)
{
string x;
GridViewRow theGridViewRow = gvSquid.SelectedRow;
x = gvSquid.DataKeys[theGridViewRow.RowIndex].Value.ToString();
}
我想出来了<必须设置code>EnableViewState=“true”
。一旦我改变了,数据键突然出现了
gvSquid.SelectedRow.RowIndex=0
,所以我仍然得到ArgumentOutOfRange异常。就这一点而言,gvSquid.DataKeys.Count=0
,所以我似乎失去了所有与DataKey相关的东西。