我正在尝试使用asp.net GridView的DataKeyNames属性设置两个数据键。
我有一个简单的查询如下:
Castle.ActiveRecord.Queries.SimpleQuery<ARMapping.CONFIGURATION> c = new Castle.ActiveRecord.Queries.SimpleQuery<ARMapping.CONFIGURATION>(@"
select c from CONFIGURATION c left join c.LUserConfiguration luc left join luc.User u left join u.Dealer d left join c.TRUCK t");
在数据绑定操作中,经销商将按以下方式进行评估:
<
%Eval(“LUserConfiguration.User.Dealer.DealershipID”)%>
但是当我尝试设置DataKeyNames =“ID,LUserConfiguration.User.Dealer.DealershipID”时,我收到错误: “DataBinding:'ARMapping.CONFIGURATION'不包含名为'LUserConfiguration.User.Dealer.DealershipID'的属性。”
当Eval'd时它没有抱怨,但是我不能把Eval放在DataKeyNames属性中。
有什么想法吗?
答案 0 :(得分:0)
在the pattern outlined here之后,我能够解决问题。
一个简短的解释......我创建了一个新的CONFIGURATION类的部分类(我这样做是因为我的ActiveRecord代码是自动生成的,我无法改变它。我确信这是强烈建议的用法,因为你的模型几乎总是具有扩展功能,而部分类非常适合。
部分课程如下:
Partial Public Class CONFIGURATION
Public ReadOnly Property GetDealerID() As Integer
Get
Return LUserConfigurations.Item(0).Users.Dealer.ID
End Get
End Property
End Class
然后,我将GridView的DataKeyNames属性设置为“ID,GetDealerID”。我没有测试过,但页面加载时没有错误。
您必须确保创建属性,而不是函数(根据上面的链接)。