在dataGridView_CellFormatting上更改单元格的文本

时间:2017-03-31 14:00:47

标签: c# winforms datagridview

我有Datagridview列,其值为int。我有值状态的条件,if(status == 1)然后将文字更改为Active,否则将文字更改为Not Active

非常感谢任何帮助。

private void bindListToGridView(List<Employee> list)
{
     // DataTable dt2 = convertListToDataTable(list);
     // more codes here.
     using (dt2)
     {
        // more codes here.
        dataGridView1.Columns[8].Name = "Status";
        dataGridView1.Columns[8].HeaderText = "Status";
        dataGridView1.Columns[8].DataPropertyName = "status";

       dataGridView1.DataSource = dt2;
     }
 }
private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    string columnName = dataGridView1.Columns[e.ColumnIndex].Name;
    if (columnName == "Status")
    {
        int value = (int)dataGridView1.Rows[e.RowIndex].Cells["Status"].Value;
        if (value == 1)
        {
           // set the cell text = Active
        }
        else
        {
            // set the cell text = Not Active
        }
    }
}

1 个答案:

答案 0 :(得分:1)

为避免更改基础整数值,您可以将单元格的格式设置为所需的文本:

if (value == 1)
{
    dataGridView1.Rows[e.RowIndex].Cells["Status"].Style.Format = "Active";
}
else
{
    dataGridView1.Rows[e.RowIndex].Cells["Status"].Style.Format = "Not Active";
}

或者更容易,正如LarsTech指出的那样,只是等同地设定:

e.Value = "Active";

这是有效的,因为我们已经在CellFormatting事件处理程序中,Value的{​​{1}}属性是格式化的转换值。