2014-02-23 48 views
0

telerik網格是在其他網格被點擊後構建的。 我想用AutoGenerateColumns="True"創建grid2列。radgrid動態列與filtertemplate

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某些列?

+0

如果我理解正確的話,你想創建一個在運行時篩選自動生成的列。正確? – FeliceM

+0

是的,發佈後。 –

回答

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; 
      } 
     } 
    } 
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(); 
     //} 
    } 

嘗試和將是很好的知道,如果你的作品。

更新 後回註釋掉

+0

我沒有創建表達的問題,我想用戶從列表中選擇國家,我如何創建此列表並將其附加到列? –

+0

這是完全不同的問題!讓我們開始修復上面的問題。它有用嗎? – FeliceM

+0

但是,如果用戶必須選擇一個國家/地區,使用下拉列並將其綁定到列出所有國家/地區的數據庫表是可行的。然後使用選定的值來做你所需要的。像這樣的東西http://it.tinypic.com/r/30m0m5c/8 – FeliceM