2008-09-16 1 views
5

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

DataGridViewColumn column = new DataGridViewColumn (новый DataGridViewCheckBoxCell());

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

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

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

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

Спасибо.

ответ

0

Создать TemplateField и связанный идентификатор к нему, что-то вроде этого:

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

Я забыл указать, что мне нужен ответ для Windows Forms. Благодарю. – 2008-09-16 11:11:39

+0

Извините, я пропустил этот момент. – Biri 2008-09-17 07:05:34

1

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

+0

Да, это могло бы быть решением, возможно, но в моем случае столбцы были добавлены программно. – 2008-09-17 08:55:02

6

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

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

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