Telerik RadGrid绑定假设错误的对象类型

时间:2010-12-01 17:12:04

标签: c# asp.net telerik

我们正在使用RadGrid控件从使用NHibernate检索对象的存储库中检索User对象。我使用的对象数据源定义为:

<asp:ObjectDataSource ID="UsersData" runat="server" SelectMethod="GetAll" DataObjectTypeName="TestingApp.Lib.Domain.User" TypeName="TestingApp.Lib.Repositories.UserRepository">
</asp:ObjectDataSource>

GetAll的方法签名如下:

public IEnumerable<User> GetAll();

使用NHibernate,一些用户实际上是扩展用户的AdminUsers。似乎存储库当前首先返回一个AdminUser对象,并且控件似乎假设其余对象将是AdminUser而不是User。这会导致抛出以下异常:

"Unable to cast object of type 'TestingApp.Lib.Domain.User' to type 'TestingApp.Lib.Domain.AdminUser'."

有没有办法强制控件假设数据绑定对象是User而不是AdminUser?谢谢!


后续

看来以这种方式与NHibernate一起使用的RadGrid是不兼容的,不起作用。我们决定推出自己的解决方案。

1 个答案:

答案 0 :(得分:0)

播放魔法属性MasterTableView.RetrieveDataTypeFromFirstItem以查看是否有帮助。我认为在你的情况下应该设置为false,或者如果设置为true,集合中的第一个项应该是User类型(假设AdminUser扩展了User类)。