データソース内のアイテムの順序が変更されていないことがわかっている場合は、CommandEventArgsのCommandArgumentプロパティを使用できます。
ただし、より堅牢な方法は、GridViewのDataKeys/SelectedDataKeyプロパティを使用することです。唯一の注意点は、コマンドのタイプが「Select」でなければならないことです(デフォルトでは、RowCommandはDataKeyにアクセスできません)。
リストを構成するエンティティに一意性があると仮定すると、GridViewのDataKeysプロパティに1つ以上のキープロパティ名を設定できます。 GridViewで選択した項目が設定されている場合、キー値を取得して、バインドされたリスト内の項目を見つけることができます。このメソッドは、GridView内の順序位置がデータソース内の要素の順序位置と一致しないという問題を解決します。
例:もう一つの選択はのRowsコレクションに洞窟探検に行くことであろう
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
// Value is the Name property of the selected row's bound object.
string foo = GridView1.SelectedDataKey.Value as string;
}
:
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True"
DataKeyNames="Name" onrowcommand="GridView1_RowCommand1"
onselectedindexchanged="GridView1_SelectedIndexChanged">
</asp:GridView>
そのページのコードビハインド(またはインライン)のようなものになるだろうGridViewでは、コントロール値を取得して一度に1つの列を値を取得しますが、そうしなければならない場合は推奨されません。
これが役に立ちます。