我遇到了一个只读C#Winform DataGridView的问题。
DataSource
我有一个DataTable
,并将其分配给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
)而非“一”(或“两个”或“三个”)。
答案 0 :(得分:7)
您可以使用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;
}
}
}
答案 1 :(得分:2)
我的解决方案是将值放在DataGridViewCell.Tag属性中。
像这样:
DataGridView1.Rows[rowIndex].Cells[columnIndex].Tag = 1;
答案 2 :(得分:0)
您可以为其创建类:
public class Item
{
public int Id { get; }
public string Name { get; }
public Item(string name, int id)
{
Id = id;
Name = name;
}
public override string ToString()
{
return Name;
}
}
然后
DataGridView1.Rows[rowIndex].Cells[columnIndex]=new Item("One", 1);