2017-07-13 68 views
0

在我的代碼中,我包含2個複選框,它過濾表中的產品信息,無論它是否在訂單中。訂購的產品存儲在列表中。我使用的代碼如下所示: -RowFilter In和Not In列表<String>無法返回行C#

// productsOnOrder is updated at the beginning of this method based off data stored on a MySQL database. 
if (chkShowOrdered.CheckState == CheckState.Checked) 
{ 
    tempTable.DefaultView.RowFilter = String.Format("StockNo IN ({0})", String.Join(",", productsOnOrder)); 
    tempTable = tempTable.DefaultView.ToTable(); 
} 
else if (chkNotOrdered.CheckState == CheckState.Checked) 
{ 
    tempTable.DefaultView.RowFilter = String.Format("StockNo NOT IN ({0})", String.Join(",", productsOnOrder)); 
    tempTable = tempTable.DefaultView.ToTable(); 
} 

的問題是,即使有產品訂單,當您嘗試,並將其篩選表始終是空白。除此之外,所有產品都會在您嘗試通過未訂購進行過濾時顯示。我已將表格內和列表內的值轉換爲大寫,以確保值的格式相同。

RowFilter怎麼沒有產生想要的結果?

+0

'productsOnOrder'是一串'string'值嗎? – Corak

+0

是的,他們都存儲在列表中的字符串值

+0

你確定你必須使用'StockNo'嗎?也許它應該是'ProductNo'?第二件事是你重寫'tempTable',所以它將是完全新的對象,並且對舊對象的數據綁定將不起作用。如果值是字符串而不是數字,則必須將它們加密(放在引號中) –

回答

0

正如@Corak所說,它不工作的原因是由於這些值並未包含在單引號內。使用他提供的代碼,問題現在已經解決。