你怎么能在.NET中对一个对象进行数据绑定?

时间:2008-09-07 15:18:43

标签: .net data-binding

我想使用一个公开数据源属性的组件,但是我想只使用简单的对象,而不是为数据源提供整个对象列表。有没有办法做到这一点?

上面提到的组件是DevExpress.XtraDataLayout.DataLayoutControl - 这与问题完全无关。

5 个答案:

答案 0 :(得分:8)

Databinding需要一个IEnumerable对象,因为它就像foreach循环一样对它进行了充实。

所以要做到这一点,只需将您的单个对象包装在IEnumerable中。

即使这样也可行:

DataBindObject.DataSource = new List<YourObject>().Add(YourObjectInstance);

答案 1 :(得分:1)

在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>

Source

答案 2 :(得分:1)

除了使用实现IEnumerable&lt; T&gt;的类之外,我认为你没有太多选择。即使DataSource属性足够智能以获取标量对象,它也可能将其内部转换为向量。

然而,我会考虑使用简单的数组而不是List&lt; T&gt;因为这将导致更少的内存分配。如果您不喜欢数组语法(以及提高可读性),可以使用辅助方法:

T [] DataSourceHelper :: ToVector(T标量){     return new T [] {scalar};   }

答案 3 :(得分:1)

我跟你做同样的事。我发布了一个新问题Two-way databinding of a custom templated asp.net control,它有一点领先优势。看看你能做些什么......

答案 4 :(得分:0)