我有一个employees
表,其中第一个数字设置为 not null ,第二个数字可以是* null *所以当我调用employees
信息时在DataGridView
中查看他们的信息,空值显示为空单元格,但我想显示“不可用”单词而不是空单元格,那么我该怎么做呢?
答案 0 :(得分:3)
您可以使用以下任一选项:
DefaultCellStyle
的{{3}}属性。它设置与单元格值DBNull.Value
或null
对应的单元格显示值。CellFormatting
事件,并在单元格的值为e.Value
或DBNull.Value
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"));