0

この例に従ってください http://dev.sencha.com/deploy/ext-4.1.0-gpl/examples/form/forum-search.html

php/postgresql クエリを使用してコンボ ボックスにオートコンプリート機能を適用すると、名前が取得されます。

{
xtype: 'combo',
store: ds,
hideTrigger:true,
typeAhead: false,
id: 'search_input_text',
width: 187,
queryMode: 'remote',
hideLabel: true,
queryParam: 'query',
displayField: 'first_name',
valueField: 'first_name',

listConfig: {
 loadingText: 'Loading...',              
 getInnerTpl: function() {

    return  '{first_name}';  
                }}
 listeners: {
    buffer: 50,
    change: function() {
      var store = this.store;
      store.clearFilter();
      store.filter({
          property: 'first_name',
          anyMatch: true,
          value   : this.getValue()
      });

    }
  }
}

ここで、これを編集して、ユーザーが学生の姓または名を入力できるようにする必要があります。入力された各名前 (姓または名) がコンボ ボックスに表示されます。

そのため、クエリを編集して名前を取得できるようにしました。

SELECT first_name, last_name FROM students WHERE first_name ILIKE '%$query%' OR last_name ILIKE '%$query%' ";

と:

displayField: 'first_name'+'last_name',
valueField: 'first_name'+'last_name',

return  '{first_name}'+'{last_name}';

store.filter({
              property: 'first_name',
              anyMatch: true,
              value   : this.getValue()
          },
{
              property: 'last_name',
              anyMatch: true,
              value   : this.getValue()
          }

ただし、ユーザーの種類に応じて名のみを取得します。これを単独で使用する場合は次の点に注意してください。

store.filter({
                  property: 'last_name',
                  anyMatch: true,
                  value   : this.getValue()
              });

姓のみで問題なく動作します。

4

1 に答える 1

0

次のように、複数のフィルターをデータ ストアに適用できます。

var filters = [
  new Ext.util.Filter({
  filterFn: function(item){return item.get('first_name') == this.getValue() || item.get('last_name') == this.getValue();
    }
  })
];

store.filter(filters);

上記のコード ブロックは、同じフィールドに複数のフィルターを適用する方法の単なるアイデアです。二重パイプ「||」に注意してください。必要に応じて「&&」を使用できます。SQLクエリのようなものです。

于 2013-01-17T07:08:28.533 に答える