DataGridViewCheckBoxCell 类型的 DataGridView 列始终处于只读/禁用状态

发布于 2024-07-06 00:38:09 字数 375 浏览 14 评论 0原文

我正在使用 .NET Windows 窗体 DataGridView,并且需要编辑 DataBound 列(绑定在布尔 DataTable 列上)。 为此,我指定这样的单元格模板:

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

您会看到我需要一个复选框单元格模板。

我面临的问题是该列始终处于只读/禁用状态,就好像它是 TextBox 类型一样。 它根本不显示复选框。

关于如何使用 DataGridView 的可编辑复选框列有什么想法吗?

更新:对于 Windows 表单,请。

谢谢。

I am using a .NET Windows Forms DataGridView and I need to edit a DataBound column (that binds on a boolean DataTable column). For this I specify the cell template like this:

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

You see that I need a CheckBox cell template.

The problem I face is that this column is constantly readonly/disabled, as if it would be of TextBox type. It doesn't show a checkbox at all.

Any thoughts on how to work with editable checkbox columns for DataGridView?

Update: For windows forms, please.

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

我是有多爱你 2024-07-13 00:38:09

创建一个 TemplateField 并将 id 绑定到它,如下所示:

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

Create a TemplateField and bound the id to it, something like this:

<asp:TemplateField HeaderText="Whatever" SortExpression="fieldname" ItemStyle-HorizontalAlign="Center">
    <ItemTemplate>
        <asp:CheckBox runat="server" ID="rowCheck" key='<%# Eval("id") %>' />
    </ItemTemplate>
</asp:TemplateField>
涫野音 2024-07-13 00:38:09

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

Instead of trying to create the column in code, click on the tiny arrow in a box at the top right of the DataGridView control, and select "Edit Columns..." from the menu that appears. In the dialog box, click the Add button, then choose the "Databound column" option and pick the boolean column you're binding to.

过期情话 2024-07-13 00:38:09

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

作为解决方案,您可以将 AutoSizeRowsMo​​de 设置为 AllCells。

richDataGrid.AutoSizeRowsMo​​de = System.Windows.Forms.DataGridViewAutoSizeRowsMo​​de.AllCells;

Well, after more than 4 hours of debugging, I have found that the DataGridView row height was too small for the checkbox to be painted, so it was not displayed at all. I have found this after an accidental row height resizing.

As a solution, you can set the AutoSizeRowsMode to AllCells.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文