Получить данные для DataGridView из чего-то другого, кроме свойств - PullRequest
0 голосов
/ 05 августа 2011

У меня есть DataGridView с источником данных.DataGridView автоматически создает столбцы для каждого свойства.Я хочу изменить это так, чтобы он получал данные для столбцов другим способом.

Как определить, как DataGridView получает столбцы и значения из элементов в источнике данных?

Ответы [ 3 ]

1 голос
/ 05 августа 2011

Я думаю, все зависит от того, что вы собираетесь делать.Если вы просто хотите привязать к определенным столбцам, а не автоматически генерировать столбцы на основе свойств объекта DataSource, вы должны сделать следующее:

 <asp:GridView ID="GridViewID" AutoGenerateColumns="false" runat="server">
    <Columns>
        <asp:BoundField DataField="Id" HeaderText="Id" />
        <asp:BoundField DataField="Name" HeaderText="Name" />
    </Columns>
 </asp:GridView>

Если для параметра "AutoGenerateColumns" установлено значение falseи определенные столбцы установлены, GridView будет привязываться только к свойствам в объекте «DataSource», которые помечены в свойстве «DataField» указанных столбцов.

Теперь, если вы хотите изменитьэти значения данных, или специально изменить данные по мере их привязки, то вы хотите присоединить к событию "RowDataBound".Таким образом, когда данные связаны, вы можете изменять их, прикрепляя к каждой строке.

1 голос
/ 05 августа 2011

Вероятно, он использует отражение. Вы действительно хотите перехватить и изменить это поведение?

Обычно, когда автоматической генерации столбцов по умолчанию недостаточно, я отключаю его и создаю столбцы из кода либо статически, либо анализируя конфигурацию.файл, который впоследствии можно было бы расширить, чтобы иметь новые столбцы или элементы, отображаемые по-другому, без перестройки всего проекта.

0 голосов
/ 23 ноября 2011

С помощью свойства DataGridView.VirtualMode вы можете указать свое собственное хранилище данных:

Виртуальный режим предназначен для использования с очень большими хранилищами данных.Когда свойство VirtualMode имеет значение true, вы создаете DataGridView с заданным количеством строк и столбцов, а затем обрабатываете событие CellValueNeeded , чтобы заполнить ячейки.Виртуальный режим требует реализации базового кэша данных для обработки заполнения, редактирования и удаления ячеек DataGridView на основе действий пользователя.Для получения дополнительной информации о реализации виртуального режима см. Как: реализовать виртуальный режим в элементе управления Windows Forms DataGridView .

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