2017-07-13 58 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所说,它不工作的原因是由于这些值并未包含在单引号内。使用他提供的代码,问题现在已经解决。