【发布时间】: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将其转换为扩展方法。谢谢你的好主意。
标签: asp.net data-binding