單擊gvSquid2中的選擇按鈕時,x會得到一個有效且正確的值。當單擊gvSquid中的選擇按鈕時,我得到一個ArgumentOutOfRange異常,因爲gv。 SelectedIndex
= 0。另外,gv。 SelectedDataKey
爲空。我如何獲得DataKey
信息?將它放在列中是不可接受的,因爲它必須對用戶隱藏。隱藏列是無用的,因爲在DataBind()
期間,該值被丟棄。我從微軟的網站上撕下了這個例子。我錯過了什麼?當使用GridView時,使用自定義選擇按鈕時SelectedIndex始終爲0
<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.SelectedRow.RowIndex = 0',所以我仍然得到ArgumentOutOfRange例外。對於這個問題,'gvSquid.DataKeys.Count = 0',所以看起來我正在失去與DataKey有關的所有東西。 –