2010-12-01 46 views
0

我们使用RadGrid控件从存储库中检索用户对象,该存储库使用NHibernate检索对象。我使用定义为对象的数据源:Telerik RadGrid绑定假设对象类型错误

<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'." 

有没有办法来强制控制的假设数据绑定的对象是用户,而不是管理用户?谢谢!


后续

看来,radgrid控件以这种方式使用与NHibernate是不兼容,将无法正常工作。我们决定改用我们自己的解决方案。

+0

您使用的是哪个版本的.net框架? – jvanrhyn 2010-12-01 17:31:47

回答

0

玩魔术属性MasterTableView.RetrieveDataTypeFromFirstItem看看是否有帮助。我认为它应该设置为false,或者如果设置为true,则集合中的第一项应该是User类型(前提是AdminUser扩展了User类)。