2011-01-17 10 views
0

私はフィルタリングを許可したいRadGridを使用しています。個々の列ごとにフィルタリングを許可しますが、すべてのフィルタを適用するようプログラムするボタンを追加しました。RadGridがフィルタ値を失う

しかし、フィルタを適用すると、フィルタボックス内のフィルタ値が失われ、再びそれ自体が再バインドされ、RadGridがリセットされます。これはすべて、コマンドアイテムテンプレートで作成した「適用」フィルタをクリックすると発生します。

ここにいくつかのコードがあります。

protected void RadGrid1_ItemCommand(object sender, GridCommandEventArgs e) 
{ 


if (e.CommandName == "FilterRadGrid" || e.CommandName == "Filter") 
    { 
     string expression = ""; 
     GridFilteringItem item = RadGrid1.MasterTableView.GetItems(GridItemType.FilteringItem)[0] as GridFilteringItem; 
     string col1 = (item["col1 "].Controls[0] as TextBox).Text; 
     string col2 = (item["col2"].Controls[0] as TextBox).Text; 
     string col3= (item["col3"].Controls[0] as TextBox).Text; 

      if (col1!= "") 
       expression += "([col1] LIKE \'%" + col1+ "%\')"; 
      if (col2!= "") 
      { 
       if (expression != "") 
        expression += " AND "; 
       expression += "([col2] LIKE \'%" + col2+ "%\')"; 
      } 
      if (col3!= "") 
      { 
       if (expression != "") 
        expression += " AND "; 
       expression += "([col3] LIKE \'%" + col3+ "%\')"; 
      } 


     RadGrid1.MasterTableView.FilterExpression = expression; 
     RadGrid1.MasterTableView.Rebind(); 
    } 
} 

それは、フィルタボックスがクリアされているフィルタの後を除いて、行うことになっているすべてを行い、グリッドはいくつかの奇妙な理由で再び結合していないとグリッドは、もはや濾過されます。 フィルタボックス(col1、col2、col3)の値を保持する方法はありますか?

この件に関するお手伝いをあらかじめありがとうございます。

答えて

2

各列のを別々に設定する必要があります。 コントロールを参照するのではなく、GridColumnのプロパティを使用します。あなたが使用して列を取得することができ :

その後
GridBoundColumn clmn = myGrid.Columns.FindByUniqueName("theUniqueNameOfTheColumn"); 

をあなたは、列のフィルタ値を設定することができます。

clmn.CurrentFilterValue = "myFilterValue"; 

あなたがFilterTemplateを使用していない場合、これは正常に動作する必要があります。 FilterTemplateをお使いの場合は、いくつかの手順があります。

+0

フィルタテンプレートを使用してこれをどのように処理できますか?私は現在、それに問題があります。 – Derek

+0

@Derek私はこれをやっているときに働いていた会社を去り、そのソースコードを持っていません...ごめんなさい。私がTelerikでいくつかの開発をしてからしばらくしていましたので、私はあなたを助けることができません。 – thomasvdb