GridView中使用ObjectDataSource的Complex类型中的多个DataKeyNames

时间:2011-06-16 10:25:58

标签: gridview data-binding

我有一个List<Examination>数据源,其中每条记录包含两个对象。我想将datakeynames属性与两个对象的pkIds绑定,例如。

<asp:GridView DataKeyNames="obj1.pkId, obj2.pkId" ... />

我以编程方式绑定网格。但我得到错误表明:

DataBinding:'objectList'不包含名为'obj1.pkId'的属性

非常感谢。

修改

class Examination
{
 public string name{get;set;}
 public TestClass test{get;set;}
 public Subject subject{get;set;}
}

class TestClass 
{
public int testId{get;set;}
}

class Subject
{
public int subjectId{get;set;}
}

预期的DataKeyNames是“test.testId,subject.subjectId”,这使考试类对象变得独一无二。

我的ObjectDataSource将绑定到List<Examination>

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。使用deostroll上面评论中描述的索引值不起作用。

我找到了问题here instead的解决方案。

我选择在根对象级别实现一个属性来表示子对象的id。

要匹配上面的示例,代码将如下所示:

    class Examination
    {
        public string name{get;set;}
        public TestClass test{get;set;}
        public Subject subject{get;set;}
        public int TestID { get { return test.testId; } }
        public int SubjectID { get { return subject.subjectId; } }
    }

    class TestClass 
    {
       public int testId{get;set;}
    }

    class Subject
    {
       public int subjectId{get;set;}
    }

然后,在网格的标记中设置gridview上的datakeys, DataKeyNames =“name,TestID,SubjectID”