【问题标题】:checking gridview count after filter expression检查过滤器表达式后的gridview计数
【发布时间】:2015-02-17 13:27:08
【问题描述】:

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

例如,用户键入“MODEL1”并点击搜索。那么:

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

接下来我需要做的是检查它是否提取了结果?显然我可以判断它是否不在页面上,因为没有可见的网格视图。但是,我需要一种方法来捕捉它,以便我可以重置 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 存在的行数。

【问题讨论】:

    标签: c# asp.net gridview sqldatasource


    【解决方案1】:

    将您的结果放入具有Count 属性的DataView

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 2020-09-06
      相关资源
      最近更新 更多