我在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(例如只显示没有密码的那些),这样做的建议方式是什么?
谢谢!
答案 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)))
。