asp.net(C#):从gridview选择中获取未显示字段的值

时间:2009-06-26 15:10:30

标签: c# asp.net gridview

我有一个绑定到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?

3 个答案:

答案 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来获取对象吗?