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

时间:2015-11-25 14:02:23

标签: c# sql-server winforms datagridview

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

我遇到的问题与DataGridView中自动显示的内容有关。虽然大多数列中的数据都会转换为Strings并且如此显示,但BITIMAGE类型列却没有。 IMAGE类型列显示图片(这对我很好,我希望它可以执行此操作),而BIT类型列显示CheckBoxes(我不想要这个 ,我希望数据显示为String)。

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

我尝试通过以下方式更改值:(请注意,在调用以下代码之前,cell之前已被过滤为CheckBox单元格。)

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而不是字符串。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

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

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;

答案 1 :(得分:-1)

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