DataGridViewCheckBoxCell类型的DataGridView列始终是只读/禁用的

5
我正在使用.NET Windows Forms DataGridView,需要编辑一个DataBound列(绑定到布尔值DataTable列)。为此,我像这样指定单元格模板:

DataGridViewColumn column = new DataGridViewColumn(new DataGridViewCheckBoxCell());

你可以看到,我需要一个复选框单元格模板。

问题是,这一列始终是只读/禁用的,就好像它是文本框类型一样。它根本不显示复选框。

有没有想法如何处理DataGridView的可编辑复选框列?

更新:针对Windows Forms,请。

谢谢。

3个回答

6

经过4个多小时的调试,我发现DataGridView行高度太小,无法绘制复选框,所以根本没有显示。这是在意外的行高度调整后发现的。

解决方法是将AutoSizeRowsMode设置为AllCells。

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


1

不要试图在代码中创建列,而是点击 DataGridView 控件右上角的一个小箭头所在的框,并从弹出的菜单中选择“编辑列...”。在对话框中,点击“添加”按钮,然后选择“数据绑定列”选项并选择要绑定到的布尔列。


是的,那可能是一个解决方案,但在我的情况下,这些列是通过编程添加的。 - Vasile Tomoiaga

0
创建一个TemplateField并将id绑定到它,就像这样:
<asp:TemplateField HeaderText="Whatever" SortExpression="fieldname" ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <asp:CheckBox runat="server" ID="rowCheck" key='<%# Eval("id") %>' />
    </ItemTemplate>
</asp:TemplateField>

我忘记说明我需要Windows Forms的答案。谢谢。 - Vasile Tomoiaga

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接