具有filtertemplate的radgrid动态柱

时间:2014-02-23 15:15:13

标签: c# asp.net 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;
    }

如何为某些列设置Templatefilter?

2 个答案:

答案 0 :(得分:0)

您应该尝试使用_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();
       //}
   }

尝试并且很高兴知道它是否适合您。

<强>更新 发回评论

答案 1 :(得分:0)

经过一些测试和研究后,我看到了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;
            }
        }
    }