我为报告创建了一个视图。我将数据导入报告。在列中,还存在空值。如果我使用vb.net中的过滤器过滤一行,则无法显示行的空值。
例如,列名称是ID,Name,Number,Place。在这里,一些地方号码具有空值,我包括过滤器ID,名称,号码,地点。如果我使用ID过滤,则无法显示数字的空值。
这是我尝试的代码,但没有过滤
IN FORM TextBox1.Text=""
TABLE1BindingSource.Filter = "YOUR FIELDNAME LIKE '" + TextBox1.Text.Equals (String.Empty) + "'")
预期结果
表
你的FIELDNAME
值1
值2
NULL
值3
NULL
NULL
VALUE4
答案 0 :(得分:0)
那个过滤器没有意义。这部分:
TextBox1.Text.Equals(String.Empty)
如果Boolean
为空,则将评估为True
,即TextBox
,如果不是False
则为YOUR FIELDNAME LIKE 'False'
。这意味着您的过滤器最终成为:
Dim columnName As String
Dim fieldValue As String
'...
TABLE1BindingSource.Filter = String.Format("{0} LIKE '{1}%'", columnName, fieldValue)
等。你应该做的事情是这样的:
String.Format
注意那里的一些事情。首先,使用Boolean
使这类代码更具可读性。其次,使用用户输入的实际值而不是LIKE
来指示该值是否为空。第三,使用通配符是因为在没有通配符的情况下使用LIKE
是没有意义的。
还应该注意的是,该代码只适用于文本字段,因为它们是唯一由单引号分隔的代码,也是唯一可以使用{{1}}分隔的代码。如果要对数字字段或其他数据类型进行过滤,则必须编写代码以不同方式创建过滤器。