2013-01-17 2 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)하지 "하나"(또는 "이 "또는"three ").

+1

그래서 DataTable에 숫자의 텍스트 표현을 저장하지만 DataGridView에 숫자 표현을 표시 하시겠습니까? 니가 말하는거야? 데이터 테이블에 숫자가 저장되어있는 것뿐만 아니라 왜 이렇게해야하는지에 대한 더 많은 통찰력을 제공 할 수 있습니까? –

+0

Pls 아래 답변을 참조하십시오. –

답변

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

단지 의견 - 태그는 바운드 데이터 일 수 있습니다. 하지만 선택한 대답은이 작업을 수행하는 가장 좋은 방법입니다. – Ken