DataGridViewCheckBoxCell类型的DataGridView列始终为只读/禁用
时间:2020-03-05 18:55:38 来源:igfitidea点击:
我正在使用.NET Windows窗体DataGridView,并且我需要编辑DataBound列(绑定在布尔型DataTable列上)。为此,我指定像这样的单元格模板:
DataGridViewColumn column = new DataGridViewColumn(new DataGridViewCheckBoxCell());
我们看到我需要一个CheckBox单元模板。
我面临的问题是,此列一直处于只读/禁用状态,就好像它是TextBox类型一样。它根本不显示复选框。
关于如何使用DataGridView的可编辑复选框列的任何想法?
更新:请使用Windows窗体。
谢谢。
解决方案
回答
创建一个TemplateField并将其绑定到它,如下所示:
<asp:TemplateField HeaderText="Whatever" SortExpression="fieldname" ItemStyle-HorizontalAlign="Center"> <ItemTemplate> <asp:CheckBox runat="server" ID="rowCheck" key='<%# Eval("id") %>' /> </ItemTemplate> </asp:TemplateField>
回答
无需尝试在代码中创建列,而是单击DataGridView控件右上方框中的小箭头,然后从出现的菜单中选择"编辑列..."。在对话框中,单击"添加"按钮,然后选择"数据绑定列"选项,然后选择要绑定到的布尔列。
回答
嗯,经过4个多小时的调试,我发现DataGridView行高太小,无法绘制该复选框,因此根本没有显示它。我在意外调整行高后发现了这一点。
作为解决方案,我们可以将AutoSizeRowsMode设置为AllCells。
richDataGrid.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;`