将 DataGridView CheckBox Column 用于字符串数据列

Use DataGridView CheckBox Column for a string data column

我在数据库中有这个 table:

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

我有这个数据库 table。查询后我分配 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();
}

现在我想转换字符串 approvednot approvedapprovation 并显示一个复选框。

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

类似的东西:

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

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

这可能吗?怎么样?

回顾:

我想更改一个值包含复选框(已选中或未选中)text/string(已批准或未批准)的列

抱歉英语不好..

好的替代品?

存储yes/noon/offtrue/false 数据库中的值,最好在 sql 服务器中使用 bit 数据类型,但使用 DataGridViewCheckBoxColumn you can show and edit also a string column by setting TrueValue and FalseValue 属性。

在下面的示例中,我假设您在数据库中有一个可为空的列,它需要将值存储为 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。