DataTable DefaultView行筛选器不起作用

本文关键字:不起作用 筛选 DefaultView DataTable | 更新日期: 2023-09-27 18:25:37

我有一个使用DataTable作为数据源的网格视图。当我尝试对RowFilter字符串进行硬编码时,它运行良好,但当我使用GetFilterExpression()时,它不起作用。为什么?

我检查了GetFilterExpression返回的字符串,并将其与if检查相匹配,发现它与我的硬编码字符串完全匹配。

var list = (List<ResaveBase>)listGridRows;
        var dt = ToDataTable(list);
        dt.DefaultView.RowFilter = GetFilterExpression(); //When hardcoding this, it works
        gvwResavePositions.DataSource = dt;
        gvwResavePositions.DataBind();

private string GetFilterExpression()
{
    string filterExpression = String.Empty;
    filterExpression = string.IsNullOrEmpty(txtPaperId.Text)
            ? string.Empty
            : string.Format("strPaperId IN ({0})", txtPaperId.Text);
    return filterExpression;
}

DataTable DefaultView行筛选器不起作用

这应该会修复它:

gvwResavePositions.DataSource = dt.DefaultView;

根据我的知识,表达式必须用引号括起来。您的函数结果可能没有引号。你可以在函数中写逻辑,只返回值,并调用像-这样的函数

String.Format("strPaperId IN ({0})", GetFilterExpression());