C# 更改DataGridView c中单元格的值类型/值

C# 更改DataGridView c中单元格的值类型/值,c#,sql-server,winforms,datagridview,C#,Sql Server,Winforms,Datagridview,我通过DataGridView.DataSource填充DataGridView,其中源是SQL Server数据库表。但是,数据库表具有不同类型的列。虽然表中的大多数数据都是INT或VARCHAR类型,但也有一些BIT和IMAGE类型的列 我的问题与DataGridView中自动显示的内容有关。尽管大多数列中的数据被转换为字符串并以字符串的形式显示,但位和图像类型列不会。图像类型列显示图像这对我来说没问题,我希望它这样做,而位类型列显示复选框我不希望这样,我希望数据显示为字符串 我希望在加载数

我通过DataGridView.DataSource填充DataGridView,其中源是SQL Server数据库表。但是,数据库表具有不同类型的列。虽然表中的大多数数据都是INT或VARCHAR类型,但也有一些BIT和IMAGE类型的列

我的问题与DataGridView中自动显示的内容有关。尽管大多数列中的数据被转换为字符串并以字符串的形式显示,但位和图像类型列不会。图像类型列显示图像这对我来说没问题,我希望它这样做,而位类型列显示复选框我不希望这样,我希望数据显示为字符串

我希望在加载数据后进行一些格式化,并将具有复选框的单元格更改为具有字符串的单元格。然而,我似乎没有找到一种方法来做到这一点

我尝试通过以下方式更改该值:请注意,在调用下面的代码之前,单元格之前已作为复选框单元格进行筛选

if (Convert.ToBoolean(cell.Value))
{
    cell.Value = "Yes";
}
else
{
    cell.Value = "No";
}
我还尝试在更改其值之前更改单元格类型,如下所示

String dummyString;
if (Convert.ToBoolean(cell.Value))
{
    dummyString = "Yes";
}
else
{
    dummyString = "No";
}
cell.ValueType = typeof(String);
cell.Value = dummyString;
不幸的是,这也未能产生我所希望的结果。两次尝试都不会对我可以看到的DataGridView执行任何操作,并且仍然在单元格中显示复选框而不是字符串


我做错了什么?

您可以使用来自数据库的信息填充一个中间数据集,然后将该信息复制到一个新的数据集,该数据集是datagrid的源。
在复制信息的过程中,你可以做你需要的事情。

我最终创建了一个我想要的类型的新单元格,并用新单元格替换了旧单元格。请参阅下文:

String dummyString;
if (Convert.ToBoolean(cell.Value))
{
    dummyString = "Yes";
}
else
{
    dummyString = "No";
}
int rowIndex = cell.RowIndex;
int colIndex = cell.ColumnIndex;

dataGridView1[colIndex, rowIndex] = new DataGridViewTextBoxCell();
dataGridView1[colIndex, rowIndex].Value = dummyString;

您不能先使用设计器或代码添加列,然后设置AUT GENECTECOLUMNS=false,然后再设置数据源吗?