我有DataTable
包含一些行。哪个被复制到DataView
。现在我有List<string>
形式的ID。其中包含GridView
中的所选项目。现在,我想使用AND作为过滤器来过滤此DataView
。
当我只应用一个时它可以工作,但是应用多个AND
不起作用。
在.cs:
List<string> selectedAddress = new List<string>();
protected DataView GetSelectedItems()
{
DataView dv = new DataView(dtresult);
int count = selectedAddress.Count();
if (count > 0)
{
string query = "ID=";
for (int j = 0; j < selectedAddress.Count; j++)
{
string val = selectedAddress[j].ToString();
if (j == 0)
{
query += val + " and ";
}
else
{
query += "ID=" + val + "";
}
}
dv.RowFilter = query;
}
return dv;
}
有什么想法吗?
答案 0 :(得分:5)
试试这个:
List<string> selectedAddress = new List<string>();
protected DataView GetSelectedItems()
{
DataView dvResult = new DataView(dtresult);
string query = "";
int count = selectedAddress.Count();
for (int j = 0; j < selectedAddress.Count; j++)
{
string val = selectedAddress[j].ToString() + ",";
query += val;
}
query = query.Remove(query.Length - 1);
dvResult.RowFilter = "ID IN(" + query + ")";
return dvResult;
}
答案 1 :(得分:2)
如MSDN中所述,该值必须在引号内。 所以以下内容应该有效:
dv.RowFilter = "ID = '23' or ID = '46'";
无论如何,当你的列表包含要显示的ID时,运算符应该是OR而不是AND,因为表中不应该有同时具有两个ID的行。