(SQL)在DataGridView中替换NULL值的有效方法吗?

时间:2017-01-04 06:52:27

标签: c# sql vb.net winforms

我在SQL Server上有一个这样的数据库表:

USER   PASSWORD
1      samplepassword
2      NULL
3      NULL
4      sample_password

我想将PASSWORD列中的NULL值与其他列一起替换为'(未设置)'等值。或者' - '在DataGridView

中向用户显示

我有三种方法可以实现这一目标。首先是使用列NullValue的{​​{1}}属性。这种方法的关注点是设计者会创建相同DefaultCellStyle的多个副本 - 每列一个。

然后是DefaultCellStyle的{​​{1}}事件。最后,可以在SQL语句本身上进行替换,ala CellFormatting

考虑到用户之后可以过滤这个DataGridView(例如只显示没有密码的那些),这样做的建议方式是什么?

谢谢!

5 个答案:

答案 0 :(得分:3)

格式化不是SQL server责任,请在您的UI代码中保留格式。

使用DefaultCellStyle并在代码中创建DefaultCellStyle的实例,并手动将相同的实例设置为datagridview的所有列。

或仅将NullValue属性分配给已存在的样式

const string NULL_VALUE = "not set";
DataGridView.Columns["ColumnName1"].DefaultCellStyle.NullValue = NULL_VALUE;
DataGridView.Columns["ColumnName2"].DefaultCellStyle.NullValue = NULL_VALUE;

答案 1 :(得分:0)

SELECT ISNULL(YourColumn, 'yourcharacter' ) FROM YourTableName

答案 2 :(得分:0)

在SQL Server上不是100%肯定,但在MySQL上我会做以下

SELECT USER, IF(PASSWORD IS NULL,'Not Set', PASSWORD) AS PASSWORD FROM TABLE

答案 3 :(得分:0)

在加载DataGridView后运行JavaScript或jQuery函数,从DataGridView中查找空值并将其替换为“(未设置)”或“ - ”。

OR

使用值“ - ”更新数据集值为空。

答案 4 :(得分:0)

从范例的角度来看,所选答案是最好的答案,但您也可以通过创建辅助函数来处理空值。这将使您的默认值可以根据您的数据类型进行更改。它还允许您在触摸UI之前管理空值,但不会影响您的查询,如果您必须在显示输出之前处理数学,这是必不可少的。

public static dynamic NullCheck(object d, dynamic default)
{      
      return DbNull.Value == d ? default : d;
}

准备好在代码中根据需要投射结果,例如((foo)(Nullcheck(foo, bar)))