在GridView中从不同的ActiveRecord表对象设置多个DataKeyNames

时间:2009-07-14 17:29:42

标签: gridview castle-activerecord

我正在尝试使用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属性中。

有什么想法吗?

1 个答案:

答案 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”。我没有测试过,但页面加载时没有错误。

您必须确保创建属性,而不是函数(根据上面的链接)。