Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何筛选行_Vb.net - Fatal编程技术网

Vb.net 如何筛选行

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

我为报告创建了一个视图。我将数据导入到报告中。列中也存在空值。如果我在vb.net中使用过滤器过滤一行,则无法显示行的空值

例如,列名是ID、Name、Number和Place。在这种情况下,一些位置编号具有空值,包括过滤器ID、名称、编号和位置。如果我使用ID筛选,则无法显示number的空值

这是我尝试过的代码,但不是过滤器

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列要筛选,所以如果要筛选,我只想返回所有数据