字符串数据列使用DataGridView CheckBox列

我在数据库中有此表:

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();
}

现在,我要转换是字符串批准或未批准的列批准,而是显示一个复选框.

如果该单元格的值被批准,则选中该复选框,并且不对其进行修改(只读).

相似的东西:

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

我要实现……帮我一个问题.

这是可能的 ?怎么样?

重新封顶:

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

对不起,英语不好..

好的替代品?

解决方法:

要在数据库中存储yes / no或on / off或true / false值,最好在sql server中使用位数据类型,但是使用DataGridViewCheckBoxColumn时,您还可以通过设置TrueValueFalseValue属性来显示和编辑字符串列.

在下面的示例中,我假设数据库中有一个可为空的列,该列需要将值存储为APPROVED或NOTAPPROVED作为nvarchar(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.

上一篇:c# – 在DataGridView中对日期进行排序


下一篇:c# – 如果只选择部分行,如何获取所有选定的行?