2014-07-26 104 views
0

我創建了一個報告視圖。我將數據導入到報告中。在列中,空值也存在。如果我使用vb.net中的過濾器過濾一行,則無法顯示行的空值。如何過濾行

例如,列名是ID,名稱,數字,地點。在這一些地方號碼有空值我包括過濾器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

該過濾器沒有意義。這一部分:

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。如果你想過濾一個數字字段或其他數據類型,那麼你必須編寫代碼來創建不同的過濾器。

+0

感謝Mr.jmcilhinney此代碼對我有用,我想在列表中顯示空值。您的代碼僅顯示非空值 – Nikil

+0

我的代碼與NULL值完全無關。如果有與您的過濾器相匹配的行,則會顯示它們,無論它們是否包含NULL。如果你的意思沒有真正的說,就是你想能夠過濾NULL值,那就不一樣了。您不能使用'='或'LIKE'或任何其他常用的運算符來表示NULL。你必須使用'IS NULL'或'IS NOT NULL'。例如,如果你想過濾一個特定值和NULL的列,那麼你會使用像SomeColumn IS NULL或SomeColumn ='Hello World'。 – jmcilhinney

+0

TABLE1BindingSource.Filter = String.Format(「'{0}%'LIKE'{1}%'」,columnName,fieldValue) – Nikil