0

多数のエントリを持つコンボボックスにフィルタがあります。完全一致でデータグリッドをフィルタリングする代わりに、選択した値を取得し、選択した値がデータフィールドに含まれているレコードのみを表示したいと思います。例: ユーザーが「新規」の値を選択すると、データグリッドには、レコードの内容が「新規ユーザー」、「新規ユーザー」、「これは新規」などのレコードが表示されます。使用する必要があると思います。 RegExpですが、それを機能させる方法がわかりません。前もってありがとう、S...

4

2 に答える 2

4

このようなものが機能するはずです:

 public function filter(item:Object):Boolean{
        var result:Boolean=false;
        if (item.name.toUpperCase().indexOf(cbo.selectedLabel.toUpperCase()) >= 0)
             result=true;
        return result;
 }

このフィルター関数は、コンボボックスの現在選択されているラベルで渡されたオブジェクトの名前属性(またはフィルターをかけたいもの)を検索し、その値が見つかった場合はtrueを返します。したがって、文字列のどこかに「New」という単語が見つかると、データグリッドに表示されます。IE:「新規ユーザー」、「新規ユーザー」は、フィルタリングされると両方とも表示されます。

これがあなたが探しているものであることを願っています。

于 2008-10-06T23:14:11.973 に答える
3

これを変更して、ドロップダウン フィルタリング機能を生成できます。現在、テキストボックスのフィルタリングは機能しています。だから私はここに投稿しています。

2 つの文字列変数 tempString と tempString_Name を宣言してから...

次の 2 つの関数を使用します。

 private function filterByTerritory(item:Object):Boolean{
        tempString = item.name;
        tempString_Name = item.territory;
        if( (tempString.indexOf(sampleFilter.text,0) != -1) && 
                      (tempString_Name.indexOf(terrFilterTxt.text,0) != -1)){
            return true;
        }
        else{
            return false;
        }
     } 
     private function doFilter():void{
        if( (sampleFilter.text.length == 0) && 
                (terrFilterTxt.text.length == 0)) {
            myData.filterFunction == null;
        }
        else{
            myData.filterFunction = filterByTerritory;
        }
        myData.refresh();
     }

これらの 2 つのテキスト ボックスを介してデータを受け入れる

<mx:TextInput id="sampleFilter" change="doFilter()"/>
  <mx:TextInput id="terrFilterTxt" change="doFilter()"/>

一言で言えば、フィルタリングを行いたいイベントで doFilter を呼び出します。

すぐに、コンボ ボックスに基づくデータグリッドのフィルタリングを投稿します。それまでさようなら。私はすぐにメンバーになります:)

于 2010-01-26T15:23:35.030 に答える