【问题标题】:Dynamically add Filter Expression to the Gridview to Filter Two Columns将过滤器表达式动态添加到 Gridview 以过滤两列
【发布时间】:2014-10-08 19:32:40
【问题描述】:

请看以下代码:

protected void CheckBoxList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        SqlDataSource1.FilterExpression = "";
        foreach (ListItem l in CheckBoxList1.Items)
        {
            if (l.Selected)
            {
                HD1.Value += l.Value + ",";
                if (SqlDataSource1.FilterExpression == "")
                    SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%'";
                else
                {
                    SqlDataSource1.FilterExpression += "or TSOType like '" + l.Value + "%'";
                }

            }
        }
    }

当复选框中的项目被选中时,我会动态地将过滤器表达式分配给 Gridview。当 Cloumn "TSOType" 满足要求时,这会给我预期的结果。我现在想要的是在 FilterExpression 中再添加一个列过滤器。例如,现在我有

SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%'";

但我想去

SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%' + TSOStatus like '" + j.Value + "%'";

我应该如何编码,我需要另一个 for 循环吗?

【问题讨论】:

  • j 的值从何而来?
  • @DennisR 如果我创建,它来自另一个复选框列表。

标签: c# asp.net gridview


【解决方案1】:

SqlDataSource 控件仅在位于 DataSet 模式。

详情请参阅here。所以为SqlDataSource 对象添加DataSourceMode="DataSet"

您可以使用AND 运算符为FilterExpression 添加多个条件

SqlDataSource1.FilterExpression += " TSOType like '" + l.Value + "%' + AND TSOStatus like '" + j.Value + "%'";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多