2013-01-17 77 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