DataTable DefaultView Rowfilter不起作用

时间:2014-10-06 10:02:26

标签: c# asp.net

我有一个使用DataTable作为数据源的gridview。当我尝试对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;
}

2 个答案:

答案 0 :(得分:2)

这应该解决它:

gvwResavePositions.DataSource = dt.DefaultView;

答案 1 :(得分:1)

根据我的知识表达式必须带引号。你的功能结果可能没有引号。 你可以在函数中编写逻辑并仅返回值,并调用函数 -

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