我有一个绑定到ObjectDataSource的GridView控件,它返回一个如下所示的对象列表:
public class X {
public string DisplayName {
get;
}
public string Guid {
get;
}
}
我不想在GridView中显示Guid
属性,但我需要在选择对象时检索它。
我找不到“DataValueField”属性,就像ListBox控件一样
作为解决方法,我尝试为绑定到Guid属性的列设置Visible=false
,并使用Row
方法从SelectedIndexChanged
对象获取单元格文本:
protected void GridView1_SelectedIndexChanged(object sender,EventArgs e){
GridViewRow row = GridView1.SelectedRow;
string id = row.Cells[2].Text; // empty
}
但这不起作用 - 显然如果列不可见,其Text属性将保留为空。
如何在仅显示DisplayName的情况下获取所选对象的Guid?
答案 0 :(得分:4)
不确定它如何与ObjectDataSource一起使用,但是使用SqlDataSource,我们在GridView的行上设置了键。
GridView1.DataKeyNames = new String[] {"Guid"};
然后,你可以通过这样做获得密钥:
string guid = GridView1.DataKeys[GridView1.SelectedRow.RowIndex];
答案 1 :(得分:1)
将“Guid”添加到GridView的DataKeyNames属性中。即使列被隐藏,也可以使用它。
答案 2 :(得分:0)
你不能使用row.DataItem来获取对象吗?