Чем коллекция пустых строк отличается от других пустых коллекций, которые не вызывают исключение - PullRequest
0 голосов
/ 08 декабря 2009


Если ObjectDataSource.SelectMethod = A и если A () возвращает один объект типа O, то этот объект помещается в одноэлементную коллекцию IEnumerable и возвращается методом ODS.Select

Таким образом, предполагая, что ODS.SelectMethod указывает на метод A (), тогда, если A () возвращает нуль, при вызове ODS этот ноль (я предполагаю) обернут в один элемент IEnumerable collection и исключение не выбрасывается. Аналогично, если ODS.SelectMethod указывает на метод B (), который возвращает список объектов, и если B () возвращает пустую коллекцию при вызове ODS, то исключение не выдается.

Но если вместо этого метод возвратит (при вызове ODS.Select ) пустую коллекцию строк ( string [] ), то я получу исключение « Источник данных для GridView не имел никаких свойств или атрибутов, из которых можно было бы сгенерировать столбцы ». Чем коллекция пустых строк отличается от других пустых коллекций, которые не вызывают исключение?


Спасибо

1 Ответ

2 голосов
/ 08 декабря 2009

Если ваш GridView имеет AutoGenerateColumns, установленный на true, ему требуется последовательность объектов, которые имеют привязываемые элементы, например DataRow. Автогенератор столбцов проверяет подпись переданной последовательности и знает, как обрабатывать несколько различных случаев, таких как DataRow, который имеет коллекцию столбцов, которые могут быть выведены в список столбцов в элементе управления GridView. Строка не имеет таких свойств. Установите AutoGenerateColumns на false и определите свой собственный столбец, например:

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

Строка довольно ограничена в качестве источника данных для GridView - если вы не планируете оценить свойства строки, такие как ее длина, вы можете просто напечатать саму строку (DataItem).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...