【问题标题】:How to apply filter to DataView with Multiple "AND" conditions如何将过滤器应用于具有多个“AND”条件的 DataView
【发布时间】:2013-10-16 11:58:59
【问题描述】:

我有一个 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;
}

有什么想法吗?

【问题讨论】:

标签: c# asp.net filtering dataview rowfilter


【解决方案1】:

试试这个:

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;
}

【讨论】:

  • 伟大的@Somnath ..它的时间太长了,但这很好用..!谢谢!
【解决方案2】:

MSDN 中所述,该值必须在引号内。 所以以下应该工作:

dv.RowFilter = "ID = '23' or ID = '46'";

无论如何,当您的列表包含要显示的 ID 时,运算符应该是 OR 而不是 AND,因为表中不应有任何行同时具有两个 ID。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-18
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    相关资源
    最近更新 更多