【问题标题】:Use DataGridView CheckBox Column for a string data column对字符串数据列使用 DataGridView CheckBox Column
【发布时间】:2016-03-17 15:38:36
【问题描述】:

我在数据库中有这张表:

applicant  |  module  |  date  |  approvation  | 
  xxxx         xxxx      xxxx        xxxxxxx
  yyyy         yyyy      yyyy        yyyyyyy
  tttt         tttt      tttt        ttttttt

我有这个数据库表。查询后我分配 DataTable 给我的DataGridView.DataSource

QueryAssist qa = new QueryAssist();
DataTable dt = new DataTable();
dt = qa.runQuery('myquery');

dgvApprovazione.DataSource = dt;
dgvApprovazione.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells);

// modify, transform 2nd column in cellLink
foreach (DataGridViewRow row in dgvApprovazione.Rows)
{
    row.Cells[1] = new DataGridViewLinkCell();
}

现在我想将列 approvation 转换为字符串 approvednot approved 并显示一个复选框。

如果此单元格的值为approved 复选框已选中且未修改(只读)。

类似的东西:

foreach (DataGridViewRow row in dgvApprovazione.Rows)
{
    if (row.Cells[3].Value.ToString().Equals("APPROVED"))
    {
        row.Cells[3] = new DataGridViewCheckBoxCell();
    }
} 

我有一个问题要实施...帮帮我。

有可能吗?怎么样?

重述:

我想在复选框(选中或未选中)中更改值包含的列是文本/字符串(已批准或未批准)

抱歉英语不好..

好的替代品?

【问题讨论】:

  • 在您的数据库表中将 Approvation 字段的类型更改为布尔值即可。

标签: c# winforms checkbox datagridview datagridviewcheckboxcell


【解决方案1】:

要在数据库中存储 yes/noon/offtrue/false 值,最好使用bit 数据类型在 sql server 中,但使用 DataGridViewCheckBoxColumn 您可以通过设置 TrueValueFalseValue 属性来显示和编辑字符串列。

在下面的示例中,我假设您在数据库中有一个可为空的列,需要将值存储为 APPROVEDNOTAPPROVEDnvarchar(50),并且您需要使用 DataGridViewCheckBoxColumn 编辑这些值。

为此,您应该使用设计器或代码以这种方式添加您的列:

var column1 = new DataGridViewCheckBoxColumn();   
column1.Name = "column1";                         //Name of column
column1.HeaderText= "Is Approved";                //Title of column
column1.DataPropertyName = "approvation";         //Name of field in database
column1.TrueValue = "APPROVED";                   //True value
column1.FalseValue = "NOTAPPROVED";               //False Value
this.dataGridView1.Columns.Add(column1);

通过这种方式,您可以将已批准或未批准的复选框显示为复选框,您也可以使用复选框编辑这些值。

如果您不需要编辑它们而只想显示它们,您可以将列的只读属性设置为true。

【讨论】:

  • 一开始,我的想法是滑动(foreach)整个列“已批准”或“未批准”(字符串)......然后创建一个新列(复选框列)添加到datagridview 并且如果值为“已批准”...复选框选中,否则未选中复选框。现在才显示datagridview。我已经解决了在 db 中声明是/否字段 :) .. 但是你的解决方案很好..
  • 最好使用答案中所说的位字段。但是对于用户需要使用复选框编辑(显示)字符串列的情况,该解决方案可能很有用:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
  • 2012-05-13
相关资源
最近更新 更多