具有ObjectDataSource的GridView中复杂类型的多个DataKeyName
我有一个具有ObjectDataSource的GridView中复杂类型的多个DataKeyName,gridview,data-binding,Gridview,Data Binding,我有一个列表数据源,其中每个记录包含两个对象。我想将datakeynames属性与两个对象的PKID绑定,例如 <asp:GridView DataKeyNames="obj1.pkId, obj2.pkId" ... /> 预期的DataKeyName是“test.testId,subject.subjectId”,这使得考试类对象是唯一的 我的ObjectDataSource将绑定到列表我也遇到了同样的问题。使用DeoWalk在上面的评论中描述的索引值不起作用 我找到了解决我问
列表
数据源,其中每个记录包含两个对象。我想将datakeynames属性与两个对象的PKID绑定,例如
<asp:GridView DataKeyNames="obj1.pkId, obj2.pkId" ... />
预期的DataKeyName是“test.testId,subject.subjectId”,这使得考试类对象是唯一的
我的ObjectDataSource将绑定到
列表
我也遇到了同样的问题。使用DeoWalk在上面的评论中描述的索引值不起作用
我找到了解决我问题的办法
我选择在根对象级别实现一个属性来表示子对象的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上的数据键,
DataKeyNames=“name,TestID,SubjectID”我也有同样的问题。使用DeoWalk在上面的评论中描述的索引值不起作用 我找到了解决我问题的办法 我选择在根对象级别实现一个属性来表示子对象的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上的数据键,
DataKeyNames=“name,TestID,SubjectID”