C# DataTable DefaultView行筛选器不工作

C# DataTable DefaultView行筛选器不工作,c#,asp.net,C#,Asp.net,我有一个gridview,它使用DataTable作为数据源。当我尝试硬编码RowFilter字符串时,它工作得很好,但当我使用GetFilterExpression()时,它就不工作了。为什么? 我检查了GetFilterExpression返回的字符串,并将其与if检查相匹配,发现它与我的硬编码字符串完全匹配 var list = (List<ResaveBase>)listGridRows; var dt = ToDataTable(list);

我有一个gridview,它使用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;
}
var list=(list)listGridRows;
var dt=ToDataTable(列表);
dt.DefaultView.RowFilter=GetFilterExpression()//当硬编码时,它会工作
gvwResavePositions.DataSource=dt;
gvwResavePositions.DataBind();
私有字符串GetFilterExpression()
{
string filterExpression=string.Empty;
filterExpression=string.IsNullOrEmpty(txtPaperId.Text)
?字符串。空
:string.Format(“strPaperId IN({0})”,txtPaperId.Text;
返回过滤器表达式;
}

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

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

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

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

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

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

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

String.Format("strPaperId IN ({0})", GetFilterExpression());
这应该可以解决这个问题:

gvwResavePositions.DataSource = dt.DefaultView;
这应该可以解决这个问题:

gvwResavePositions.DataSource = dt.DefaultView;
这应该可以解决这个问题:

gvwResavePositions.DataSource = dt.DefaultView;
这应该可以解决这个问题:

gvwResavePositions.DataSource = dt.DefaultView;