【问题标题】:radgrid dynamic columns with filtertemplate带有过滤器模板的 radgrid 动态列
【发布时间】:2014-03-25 01:41:13
【问题描述】:

telerik 网格是在单击其他网格后构建的。 我想用AutoGenerateColumns="True" 创建 grid2 列。

grid1 被点击后有回发,我得到了 grid1 的值 所以我可以获得更多数据来绑定grid2。

protected void grid1_ItemCommand(object sender, GridCommandEventArgs e)
    {
        if (e.CommandName == "RowClick")
        {
            tableID = Convert.ToInt32(((GridDataItem)e.Item).GetDataKeyValue("Id"));

            grid2.Rebind();

        }
    }

点击后我设置了grid2的数据源:

protected void grid2_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
    {
        grid2.DataSource = data;
        grid2.Visible = data.Count > 0;
    }

如何为某些列设置模板过滤器?

【问题讨论】:

  • 如果我理解正确,您想在运行时为自动生成的列创建过滤器。对吗?
  • 是的,在回发之后。

标签: c# asp.net telerik


【解决方案1】:

经过一些测试和研究,我看到了这个telerik post

我的工作代码:

protected void grid2_ColumnCreated(object sender, GridColumnCreatedEventArgs e)
    {
        if (e.Column.UniqueName == "Description")
        {
            GridBoundColumn bCol = e.Column as GridBoundColumn;
            if (bCol != null)
            {
                TemplateAutoCompleteFilter template = new TemplateAutoCompleteFilter(
                                   RadComboBoxFilter.Contains, data.Select(r => r.Name).ToArray());
                bCol.FilterTemplate = template;
            }
        }
    }

【讨论】:

    【解决方案2】:

    您应该尝试使用_prerender 在代码后面设置您的过滤器。 这是我发现的一个示例,您显然必须根据需要自定义过滤器:

    protected void RadGrid1_PreRender(object sender, EventArgs e)
       {
           //if (!Page.IsPostBack)
           //{
               RadGrid1.MasterTableView.FilterExpression = "([Country] LIKE \'%UK%\') ";
               GridColumn column = RadGrid1.MasterTableView.GetColumnSafe("Country");
               column.CurrentFilterFunction = GridKnownFunction.StartsWith;
               column.CurrentFilterValue = "UK";
               RadGrid1.MasterTableView.Rebind();
           //}
       }
    

    尝试一下,很高兴知道它是否适合您。

    更新 回帖已注释掉

    【讨论】:

    • 我没有创建表达式的问题,我希望用户从列表中选择国家,我如何创建此列表并将其附加到列?
    • 这是一个完全不同的问题!让我们开始修复上述问题。成功了吗?
    • 但是,如果用户必须选择一个国家/地区,使用下拉列并将其绑定到列出所有国家/地区的数据库表是可行的。然后使用选定的值来做你需要的。像这样it.tinypic.com/r/30m0m5c/8
    • 您建议将过滤器从网格中取出?我真的希望过滤器位于特定列的顶部
    猜你喜欢
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多