代码之家  ›  专栏  ›  技术社区  ›  Paolo Tedesco

ASP.NET(C):从网格视图选择中获取未显示字段的值

  •  1
  • Paolo Tedesco  · 技术社区  · 16 年前

    我有一个GridView控件绑定到一个ObjectDatasource,它返回如下所示的对象列表:

    public class X {
        public string DisplayName {
            get;
        }
        public string Guid {
            get;
        }
    }
    

    我不想展示 Guid 属性,但我需要在选择对象时检索它。
    我找不到“dataValueField”属性,如ListBox控件。
    为了解决这个问题,我试着 Visible=false 对于绑定到guid属性的列,并从 Row 对象中 SelectedIndexChanged 方法:

    protected void GridView1_SelectedIndexChanged(object sender,EventArgs e){
        GridViewRow row = GridView1.SelectedRow;
        string id = row.Cells[2].Text; // empty
    }
    

    但这不起作用-显然,如果列不可见,则其文本属性保留为空。

    当只显示显示名称时,如何获取所选对象的GUID?

    3 回复  |  直到 16 年前
        1
  •  4
  •   Matthew Jones    16 年前

    不确定如何使用ObjectDatasource,但对于sqldatasource,我们在GridView的行上设置键。

    GridView1.DataKeyNames = new String[] {"Guid"};
    

    然后,您可以通过执行以下操作获得密钥:

    string guid = GridView1.DataKeys[GridView1.SelectedRow.RowIndex];
    
        2
  •  1
  •   Ken Pespisa    16 年前

    将“guid”添加到GridView的DataKeyNames属性中。这样,即使该列是隐藏的,也可以使用它。

        3
  •  0
  •   Fiona - myaccessible.website    16 年前

    不能使用row.dataitem获取对象本身吗?