我想使用一个公开数据源属性的组件,但我不想为数据源提供整个对象列表,我只想使用简单的对象。有没有办法做到这一点?
提到的组件是 DevExpress.XtraDataLayout.DataLayoutControl - 不过这与问题无关。
我想使用一个公开数据源属性的组件,但我不想为数据源提供整个对象列表,我只想使用简单的对象。有没有办法做到这一点?
提到的组件是 DevExpress.XtraDataLayout.DataLayoutControl - 不过这与问题无关。
数据绑定需要一个 IEnumerable 对象,因为它像 foreach 循环一样枚举它。
所以要做到这一点,只需将您的单个对象包装在一个 IEnumerable 中。
即使这样也行:
DataBindObject.DataSource = new List<YourObject>().Add(YourObjectInstance);
在 ASP.NET2.0 中,您可以使用泛型集合使该单个对象成为其中仅包含一个对象的列表,您可以使用 objectdatasource 将其数据绑定到任何服务器控件,例如
List<clsScannedDriverLicense> DriverLicenses = new
List<clsScannedDriverLicense>();
//this creates a generic collection for you that you can return from
//your BLL to the ObjectDataSource
DriverLicenses.Add(TheOneObjectThatYouHaveofType_c lsDriverLicense);
然后你的 ObjectDataSource 看起来像这样:
<asp:ObjectDataSource ID="odsDL" runat="server"
SelectMethod="OrdersByCustomer"
TypeName="YourBLL.UtiltiesClassName"
DataObjectTypeName="clsScannedDriverLicense">
</asp:ObjectDataSource>
除了使用实现 IEnumerable<T> 的类之外,我认为您别无选择。即使 DataSource 属性足够智能以获取标量对象,它也可能会在内部将其转换为向量。
但是,我会考虑使用简单的数组而不是 List<T>,因为这将导致更少的内存分配。如果您不喜欢数组语法(也为了提高可读性),您可以使用辅助方法:
T[] DataSourceHelper::ToVector(T scalar) { return new T[] { scalar }; }
我追求和你一样的东西。我已经发布了一个新问题自定义模板化 asp.net 控件的双向数据绑定,该控件有点领先。看看你能做些什么......
在我的 formView 中使用它:
databoundControl.DataSource = new [] { singleObject };
databoundControl.DataBind();