2013-01-17 117 views
3

我遇到了只讀C#Winform DataGridView的問題。DataGridView單元格文本和單元格值

對於DataTable,我有一個DataSource,並將它分配給DataGridView1.DataSource。我想通過單元格值顯示單元格文本而不更改DataSource

例:

cell value=1 => cell display text="one", 
cell value=2 => cell display text="two" 

我想,如果我得到:

DataGridView1.Rows[rowIndex].Cells[columnIndex].Value 

那麼它必須1(或2,或3)不是 「一個」(或「二「或」三「)。

+1

因此,您要在DataTable中存儲數字的文本表示,但是您希望在DataGridView中顯示數字表示?那是你在說什麼?你能否提供一些更深入的瞭解,爲什麼你必須這樣做,而不僅僅是將數字存儲在數據表中? –

+0

請看下面的答案。 –

回答

6

您可以使用CellFormatting事件處理程序。

private void DataGridView1_CellFormatting(object sender, 
    DataGridViewCellFormattingEventArgs e) 
{ 
    DataGridView dgv = (DataGridView)sender; 
    if (dgv.Columns[e.ColumnIndex].Name == "TargetColumnName" && 
     e.RowIndex >= 0 && 
     dgv["TargetColumnName", e.RowIndex].Value is int) 
    { 
     switch ((int)dgv["TargetColumnName", e.RowIndex].Value) 
     { 
      case 1: 
       e.Value = "one"; 
       e.FormattingApplied = true; 
       break; 
      case 2: 
       e.Value = "two"; 
       e.FormattingApplied = true; 
       break; 
     } 
    } 
} 
+0

非常感謝!這是我的完整答案 –

+0

如何在radfatagridview中實現它? – manizheh

2

我的解決方案是將值放在DataGridViewCell.Tag屬性中。

像這樣:

DataGridView1.Rows[rowIndex].Cells[columnIndex].Tag = 1; 
+1

你不能這樣做,這是非常手動的。當分配'DataSource'時,您必須再次分配'Tag'。 –

+0

只是一個評論 - 標籤也可以是數據綁定。但選定的答案是做到這一點的最佳方式,IMO .. – Ken