空字符串集合与其他空集合有何不同,不会导致异常

时间:2009-12-07 21:19:12

标签: asp.net data-binding gridview


如果 ObjectDataSource.SelectMethod = A 并且如果A()返回类型为O的单个对象,则此对象将包装在一个元素IEnumerable集合中,并由ODS.Select方法返回

因此,假设 ODS.SelectMethod 指向方法A(),那么如果A()返回null,则在被ODS调用时,此null是(我假设)包装到一个元素IEnumerable集合中并且没有抛出异常。类似地,如果 ODS.SelectMethod 指向返回对象列表的方法B(),并且如果B()在ODS调用时返回空集合,则不会抛出任何异常。

但是如果一个方法会返回(当被 ODS.Select 调用时)一个空字符串集合( string [] ),那么我会得到异常“< em> GridView的数据源没有任何属性或属性可用于生成列“。空字符串集合与其他空集合有何不同,这不会导致异常?


Thanx

1 个答案:

答案 0 :(得分:2)

如果您的GridView将AutoGenerateColumns设置为true,则需要一系列具有可绑定成员的对象,例如DataRow。列自动生成器检查传入的序列的签名,并知道如何处理几种不同的情况,例如DataRow,它具有一组列,可以将这些列推断为GridView控件上的列列表。字符串没有这样的属性。将AutoGenerateColumns设置为false,并定义您自己的列,如下所示:

<Columns>
    <asp:TemplateField>
        <ItemTemplate><%# Container.DataItem %></ItemTemplate>
    </asp:TemplateField>
</Columns>

一个字符串作为GridView的数据源非常有限 - 除非你打算像字符串那样计算字符串的属性,你实际上只需打印字符串本身(DataItem)。