如果您可以确定数据源中项目的顺序没有更改,则可以使用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通过获取控制值一次获取列的值,但除非必须,否则不建议这样做。
希望这会有所帮助。