如果您可以確定數據源中項目的順序沒有更改,則可以使用CommandEventArgs的CommandArgument屬性。
但是,更健壯的方法是使用GridView的DataKeys/SelectedDataKey屬性。唯一需要注意的是你的命令必須是「Select」類型的(因此,默認情況下RowCommand不能訪問DataKey)。
假設您在包含您的列表的實體中具有某種唯一性,您可以在GridView的DataKeys屬性中設置一個或多個關鍵屬性名稱。當GridView中的選定項目被設置時,您可以檢索您的鍵值並在綁定列表中找到該項目。這種方法讓你擺脫了讓GridView中的序號位置與數據源中元素的序號位置不匹配的問題。
例子:
<asp:GridView ID="GridView1" runat="server" AutoGenerateSelectButton="True"
DataKeyNames="Name" onrowcommand="GridView1_RowCommand1"
onselectedindexchanged="GridView1_SelectedIndexChanged">
</asp:GridView>
然後代碼隱藏(或內聯)的頁面會是這樣的:
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;
}
另一種選擇是去的行集洞穴探險GridView通過獲取控制值一次獲取列的值,但除非必須,否則不建議這樣做。
希望這會有所幫助。