过滤表达式后检查gridview计数

时间:2015-02-17 13:27:09

标签: c# asp.net gridview sqldatasource

我正在使用asp:GridView。在这个aspx页面上,我通过在文本框中键入特定值,为用户提供搜索当前gridview的选项。然后,我根据用户输入的内容设置了一个SqlDataSource.FilterExpression。

例如,用户类型" MODEL1"并点击搜索。然后:

SqlDataSource.FilterExpression = "ModelName= " + "'" + TextBox.Text + "'";

接下来我需要做的是检查是否结果?显然,我可以判断它是否在页面上没有,因为没有可见的gridview。但是,我需要一种方法来捕获它,这样我就可以重置FilterExpression并抛出一个"不正确的搜索"用户留言。我没有在FilterExpression下看到任何可以帮助我的方法,而且我已经尝试了GridView.Rows.Count,它似乎无法正常工作。我还有其他选择吗?或者我可以将Rows.Count方法做错了吗?

这是触发搜索事件时发生的一些额外代码:

        if (TextBox.Text == string.Empty)
        {
            errorLabel.Text = "Please enter a value";
        }
        else
        {
            SqlDataSource.FilterExpression = "ModelName= " + "'" + TextBox.Text + "'";
            if (!GridView.Rows.Count > 0)
            {
                errorLabel.Text = "Model not found";
                SqlDataSource.FilterExpression = "";
            }
        }

编辑:只是想补充一点,GridView.Rows.Count产生的值为51,即没有FilterExpression就存在多少行。

1 个答案:

答案 0 :(得分:1)

将结果放在DataView,其Count属性:

SqlDataSource.FilterExpression = "ModelName= " + "'" + TextBox.Text + "'";
System.Data.DataView dv = (DataView)SqlDataSource.Select(DataSourceSelectArguments.Empty);
dv.RowFilter = SqlDataSource.FilterExpression;
int RowCount = dv.Count;

我建议您在FilterExpression上使用String.Format()。它可以让您避免语法错误:

SqlDataSource.FilterExpression = String.Format("ModelName='{0}'", TextBox.Text);