如何将 ASP.NET FormView 绑定到单个记录?

Posted

技术标签:

【中文标题】如何将 ASP.NET FormView 绑定到单个记录?【英文标题】:How do I bind an ASP.NET FormView to a single record? 【发布时间】:2010-11-10 07:51:40 【问题描述】:

ASP.NET FormView 控件的全部目的是一次显示一条记录。那么如何将它绑定到单个记录?它抱怨

数据源是无效类型。它必须是 IListSource、IEnumerable 或 IDataSource。

如果这是唯一的解决方案,我可以将我的对象包装在一个列表中。在此应用程序中,FormView 位于用户控件内,并且我在公共方法中检索对象,即我没有使用数据源控件。我也没有在这里做任何 2 路数据绑定,我只是在这种情况下使用 FormView 来保持一致的外观。

如果我通过书并将 FormView 绑定到返回记录列表的数据源,它实际上会检索所有记录并仅显示所选记录吗?

这是我最终在实用程序类中实现的:

public static IEnumerable<T> WrapInEnumerable<T>(T item)

    return new T[] item;

【问题讨论】:

当我尝试在我的 Linq2Sql 实体上实现它时,它仍然在将其转换为数组时抛出错误。我尝试了 Sani Huttunen 的 List 想法,并且成功了。 GOTCHA:如果您手动设置 .DataSource 属性,那么不要忘记下一行的 .DataBind() !当我没有遇到错误但没有显示数据时,让我挠了几分钟。事后看来很明显,但我通常使用 ObjectDataSource,所以它对我没有启发 我自己只是使用了这个,但有一点不同。我通过将T item 更改为this T item 将其转换为扩展方法。谢谢你的好主意。 【参考方案1】:

正如错误消息所说,DataSource 对象必须实现 IListSource、IEnumerable 或 IDataSource 才能工作。

如果您有一个未实现上述接口之一的对象 av 类型 A,那么您可以按照您的说法将您的对象包装在一个列表中:

C#

var myDataSource = new List<A> myObject;

VB.NET

Dim myDataSource As List(Of A)(myObject)

【讨论】:

感谢您的确认。这是一个伪装成问题的咆哮。并不是说它对一个项目有很大的影响,但是将它包装在一个数组中可能更有效。 同意咆哮。这是愚蠢的。该控件设计为显示单个项目,您应该可以直接绑定该对象。

以上是关于如何将 ASP.NET FormView 绑定到单个记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何将json返回的数据绑定到asp.net中的jquery gridview?

ASP.NET,将数据绑定到 asp.net 控件并仅显示一次重复值

下载功能在 asp.net 的更新面板中不起作用

Winforms 将枚举绑定到单选按钮

如何将json返回的数据绑定到asp.net中的jquery gridview?

如何在 ASP.NET Core Razor 页面中绑定复杂列表