Vb.net 如何筛选行
我为报告创建了一个视图。我将数据导入到报告中。列中也存在空值。如果我在vb.net中使用过滤器过滤一行,则无法显示行的空值 例如,列名是ID、Name、Number和Place。在这种情况下,一些位置编号具有空值,包括过滤器ID、名称、编号和位置。如果我使用ID筛选,则无法显示number的空值 这是我尝试过的代码,但不是过滤器Vb.net 如何筛选行,vb.net,Vb.net,我为报告创建了一个视图。我将数据导入到报告中。列中也存在空值。如果我在vb.net中使用过滤器过滤一行,则无法显示行的空值 例如,列名是ID、Name、Number和Place。在这种情况下,一些位置编号具有空值,包括过滤器ID、名称、编号和位置。如果我使用ID筛选,则无法显示number的空值 这是我尝试过的代码,但不是过滤器 IN FORM TextBox1.Text="" TABLE1BindingSource.Filter = "YOUR FIELDNAME LIKE '" + Tex
IN FORM TextBox1.Text=""
TABLE1BindingSource.Filter = "YOUR FIELDNAME LIKE '" + TextBox1.Text.Equals (String.Empty) + "'")
预期结果
桌子
你的域名
价值1
价值2
空的
价值3
空的
空的
价值4
那个过滤器没有意义。本部分:
TextBox1.Text.Equals(String.Empty)
如果文本框
为空,则将计算为布尔值
,即真
,如果不是空则计算为假
。这意味着您的过滤器最终将是:
YOUR FIELDNAME LIKE 'False'
等等。你实际上应该做的是这样的:
Dim columnName As String
Dim fieldValue As String
'...
TABLE1BindingSource.Filter = String.Format("{0} LIKE '{1}%'", columnName, fieldValue)
注意这里的一些事情。首先,使用String.Format
使此类代码更具可读性。其次,使用用户输入的实际值,而不是指示该值是否为空的布尔值。第三,使用通配符是因为在没有通配符的情况下像使用
一样使用,没有任何意义
还应注意,该代码只适用于文本字段,因为它们是唯一用单引号分隔的字段,也是唯一可以像使用一样使用的字段。如果要对数值字段或其他数据类型进行筛选,则必须编写代码以创建不同的筛选。谢谢jmcilhinney先生,此代码对我很有用,我希望在列表中显示空值。您的代码仅显示NOTNULL values only我的代码与null values完全无关。如果有与您的筛选器匹配的行,则无论它们是否包含空值,都将显示这些行。如果你所说的,而不是实际说的,是希望能够过滤空值,那就不同了。不能使用
=
或类似的运算符或任何其他常用的空运算符。您必须使用为空
或为非空
。例如,如果您想根据某个值筛选一个列并为空,那么您将使用类似于SomeColumn IS NULL或SomeColumn='Hello World'
。TABLE1BindingSource.filter=String.Format(“{0}%”类似于“{1}%”,columnName,fieldValue)的内容,这是没有意义的。第一个值应该是列名,为什么要用单引号括起来并与通配符组合?我还有5列要筛选,所以如果要筛选,我只想返回所有数据