Столбец DataGridView типа DataGridViewCheckBoxCell постоянно доступен только для чтения / отключен - PullRequest
5 голосов
/ 16 сентября 2008

Я использую .NET Windows Forms DataGridView, и мне нужно отредактировать столбец DataBound (который связывается с логическим столбцом DataTable). Для этого я указываю шаблон ячейки так:

Столбец DataGridViewColumn = new DataGridViewColumn (new DataGridViewCheckBoxCell ());

Вы видите, что мне нужен шаблон ячейки CheckBox.

Проблема, с которой я сталкиваюсь, заключается в том, что этот столбец постоянно доступен только для чтения / отключен, как если бы он имел тип TextBox. Флажок вообще не отображается.

Есть мысли о том, как работать с редактируемыми столбцами флажков для DataGridView?

Обновление: для оконных форм, пожалуйста.

Спасибо.

Ответы [ 3 ]

6 голосов
/ 17 сентября 2008

Что ж, после более 4 часов отладки я обнаружил, что высота строки DataGridView была слишком мала для того, чтобы флажок был нарисован, поэтому он вообще не отображался. Я обнаружил это после случайного изменения высоты строки.

В качестве решения вы можете установить для AutoSizeRowsMode значение AllCells.

richDataGrid.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

1 голос
/ 16 сентября 2008

Вместо того чтобы пытаться создать столбец в коде, нажмите на крошечную стрелку в поле в правом верхнем углу элемента управления DataGridView и выберите «Редактировать столбцы ...» в появившемся меню. В диалоговом окне нажмите кнопку «Добавить», затем выберите параметр «Столбец с привязкой к данным» и выберите логический столбец, к которому вы привязываетесь.

0 голосов
/ 16 сентября 2008

Создайте TemplateField и привязайте к нему идентификатор, примерно так:

<asp:TemplateField HeaderText="Whatever" SortExpression="fieldname" ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <asp:CheckBox runat="server" ID="rowCheck" key='<%# Eval("id") %>' />
    </ItemTemplate>
</asp:TemplateField>
...