我有一个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>
答案 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”。