0

gvSquid2 で選択ボタンをクリックすると、x は有効で正しい値を取得します。gvSquid で選択ボタンをクリックすると、gv のため ArgumentOutOfRange Exception が発生します。SelectedIndex=0。さらに、gv。SelectedDataKey無効です。どうすればDataKey情報を入手できますか? ユーザーから非表示にする必要があるため、列に配置することはできません。DataBind()中に値が破棄されるため、列を非表示にしても意味がありません。この例は Microsoft の Web サイトから引用しました。私は何が欠けていますか?

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

2 に答える 2

0

私はそれを考え出した。 EnableViewState="true"設定する必要があります。それを変更すると、突然 DataKeys が表示されました。

この質問は役に立ちました。

于 2013-11-21T14:46:56.907 に答える