我通过DataGridView.DataSource
填充DataGridView,其中源是SQL Server数据库表。但是,数据库表具有不同类型的列。虽然表中的大多数数据都是INT
或VARCHAR
类型,但有一些BIT
和IMAGE
类型列。
我遇到的问题与DataGridView中自动显示的内容有关。虽然大多数列中的数据都会转换为Strings
并且如此显示,但BIT
和IMAGE
类型列却没有。 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而不是字符串。
我做错了什么?
答案 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填充中间数据集,然后将该信息复制到新数据集,该数据集是数据网格的源。 在复制该信息的过程中,您可以做您需要的事情。