DataGridView单元格文本和单元格值

时间:2013-01-17 04:25:28

标签: c# text datagridview cell

我遇到了一个只读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(或23)而非“一”(或“两个”或“三个”)。

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);