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

问题描述:

我正在通过DataGridView.DataSource填充DataGridView,其中源是SQL Server数据库表。数据库表格具有不同类型的列。虽然表中的大部分数据类型为INTVARCHAR,但有几个BITIMAGE类型的列。更改DataGridView中单元格的值类型/值c#

我遇到的问题与在DataGridView中自动显示的内容有关。尽管大多数列中的数据被转换为Strings,并且如此显示,但BITIMAGE类型列不会。 IMAGE类型列显示图像(这对我来说很好,我希望它可以这样做),而BIT类型的列显示复选框(我不想要这个,我希望数据显示为String)。

我希望在加载数据后进行一些格式化,并将具有复选框的单元格更改为具有Strings的单元格。但是,我似乎没有找到办法做到这一点。

我试图改变通过以下值:(请注意,被称为在此之前下面的代码,cell以前已过滤的复选框单元格。)

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做任何事情,并且仍然在单元格而不是字符串中显示CheckBoxes。

我在做什么错?

+1

你不能先添加你的列(使用设计器或代码)并设置'AutgenerateColumns = false'然后设置'theDataSource'? –

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

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; 

您可以使用来自DataBase的infor填充中间数据集,然后将该信息复制到新数据集,这是数据网格的源。 在复制这些信息的过程中,你可以做你所需要的。