如何在DataGridView中为空值设置“不可用”字

时间:2016-10-08 10:59:34

标签: c# sql-server winforms datagridview

我有一个employees表,其中第一个数字设置为 not null ,第二个数字可以是* null *所以当我调用employees信息时在DataGridView中查看他们的信息,空值显示为空单元格,但我想显示“不可用”单词而不是空单元格,那么我该怎么做呢?

3 个答案:

答案 0 :(得分:3)

您可以使用以下任一选项:

  1. 设置列DefaultCellStyle的{​​{3}}属性。它设置与单元格值DBNull.Valuenull对应的单元格显示值。
  2. 使用CellFormatting事件,并在单元格的值为e.ValueDBNull.Value
  3. 时设置null

    示例1

    this.dataGridView1.Columns[1].DefaultCellStyle.NullValue = "Unavailable";
    

    示例2

    void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
    {
        if (e.ColumnIndex < 0 || e.RowIndex < 0)
            return;
    
        if (e.Value == DBNull.Value || e.Vallue == null)
            e.Value = "Unavailable";
    }
    

答案 1 :(得分:2)

将您的Select语句更改为此类语句(使用CASE WHEN):

SELECT Id, CASE WHEN SecondNumber IS NULL THEN 'Unavailable' ELSE SecondNumber END AS SecondNumber
FROM yourTable

答案 2 :(得分:1)

此解决方案还包括扩展方法,因此请进行以下扩展方法。

这是我们需要以更干净的方式设置网格的值(虽然是可选的)

 public static void ApplyAction<T>(this IEnumerable<T> source, Action<T> action)
 {
     foreach (var entity in source)
     {
         action(entity);

     }
 }

现在你所要做的就是以下几点:

dataGridView1.Rows.OfType<DataGridViewRow>().Where(c => c.Cells[ColumnName.Index].Value == null).ApplyAction(new Action<DataGridViewRow>(c => c.Cells[ColumnName.Index].Value = "Unavailable"));