2015-11-25 162 views
1

我正在通過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'? –

回答

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

您可以使用來自DataBase的infor填充中間數據集,然後將該信息複製到新數據集,這是數據網格的源。 在複製這些信息的過程中,你可以做你所需要的。

相關問題