使用多列过滤DataView

3 c# asp.net ado.net asp.net-2.0

在我的应用程序中,我使用数据视图来应用过滤器选项动态传递的过滤器.如果有2个过滤器参数,则应对参数1过滤数据视图,然后按参数2过滤.我正在使用一个在for循环中调用的方法,其中我将count设置为使用列表框选择的总no.of参数,但仅对最后一个参数进行过滤.这是我的代码:

string str = "";
for (int i = 0; i < listbox.Items.Count; i++)
{
    if (listbox.Items[i].Selected)
    {
        if (str != string.Empty)
        {
            str = str + "," + listbox.Items[i].Text;

        }
        else
        {
            str = str + listbox.Items[i].Text;
        }
    }
}

string[] items = str.Split(',');
for (int i = 0; i < items.Length; i++)
{
    ApplyFilter(items[i],dv);
}

private DataView ApplyFilter(string str,DataView newdv)
{
    newdv.RowFilter = "[" + str + "]=" + ddl.SelectedItem.ToString();

    return newdv;
}
Run Code Online (Sandbox Code Playgroud)

请提供合适的解决方案.

提前致谢...

Can*_*var 10

您应该完全应用您的过滤器,而不是逐个应用:

newdv.RowFilter = "Column1 = " + value1 + " AND Column2 = " + value2;
Run Code Online (Sandbox Code Playgroud)

因此,您可以将代码更改为:

string[] items = str.Split(',');
string filter = string.Empty;
for (int i = 0; i < items.Length; i++)
{
    filter += items[i] + " = " + dropdown.SelectedValue;
    if (i != items.Length - 1)
    {
         filter += " AND ";
    }
}
newdv.RowFilter = filter;
Run Code Online (Sandbox Code Playgroud)