Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 使用GridView时,使用自定义选择按钮时,SelectedIndex始终为0_Asp.net_Gridview_Selectedindex_Commandfield_Datakey - Fatal编程技术网

Asp.net 使用GridView时,使用自定义选择按钮时,SelectedIndex始终为0

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

单击gvSquid2中的“选择”按钮时,x将获得一个有效且正确的值。单击gvSquid中的select按钮时,我得到ArgumentOutOfRange异常,因为gv.
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相关的东西。