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

时间:2016-03-17 15:38:36

标签: c# winforms checkbox datagridview datagridviewcheckboxcell

我在数据库中有这个表:

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

我有这个db表。查询后我分配 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();
}

现在,我希望转换字符串approvationapproved的列not approved,并显示一个复选框。

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

类似的东西:

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

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

有可能吗?怎么样?

重拍:

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

抱歉英文不好..

好的选择?

1 个答案:

答案 0 :(得分:3)

要在数据库中存储是/否开启/关闭 true / false 值,最好使用{ {1}} sql server中的数据类型,但使用DataGridViewCheckBoxColumn,您可以通过设置TrueValueFalseValue属性来显示和编辑字符串列。

在下面的示例中,我假设您在数据库中有一个可以为空的列,需要将值bitAPPROVED存储为NOTAPPROVED,您需要使用{{1}来编辑这些值}}

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

nvarchar(50)

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

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