3

我在数据库中有这个表:

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作为字符串的列,approved或者not approved显示一个复选框。

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

相似的东西:

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

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

这是可能的 ?如何?

回顾:

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

对不起英语不好..

好的替代品?

4

1 回答 1

3

要在数据库中存储yes/noon/offtrue/false值,最好bit在 sql server 中使用数据类型,但使用 a您还可以通过设置和属性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。

于 2016-03-30T14:37:40.600 回答