2013-11-20 61 views
0

單擊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(); 
} 

回答

0

我想通了。必須設置EnableViewState="true"。一旦我改變了,突然出現了DataKeys。

This question helped.

1

嘗試使用網格視圖SelectedRow才能到RowIndex,就像這樣:

protected void gvSquid_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string x; 
    GridViewRow theGridViewRow = gvSquid.SelectedRow; 
    x = gvSquid.DataKeys[theGridViewRow.RowIndex].Value.ToString(); 
} 
+0

'gvSquid.SelectedRow.RowIndex = 0',所以我仍然得到ArgumentOutOfRange例外。對於這個問題,'gvSquid.DataKeys.Count = 0',所以看起來我正在失去與DataKey有關的所有東西。 –

相關問題