3

次のような検索 (フィルタリング) フィールドを含むフォームがあります。

xtype: 'form',
id: 'searchPanel',
title: 'Search',
collapsible: true,
bodyPadding: 10,

height: 210,
buttonAlign: 'left',
defaults: {
    width: 400,
    labelWidth: 120,
    allowBlank: true,
    enableKeyEvents: true        
},
layout: {
    type: 'table',
    columns: 2
},
items: [
    {
        xtype: 'textfield',
        name: 'txtFltrSiteName',
        fieldLabel: 'Site name or alias',
        id: 'txtFltrSiteName'
    },


    {
        xtype: 'textfield',
        name: 'txtMonthTraffic',
        fieldLabel: 'Month traffic',
        id: 'txtMonthTraffic',
        style: 'margin-left: 100px;'
    },

    {
        xtype: 'combo',
        id: 'ddlFltrPM',
        name: 'ddlFltrPM',
        fieldLabel: 'Project manager',
        displayField: 'display_name',
        valueField: 'user_id',
        editable: false,
        store: new storeOfUsers({ filters: [{ property: 'user_group_code', value: 'projectmanager', exactMatch: true }] })
    },

    // and many other fields below


しかし、searchボタンをクリックすると、2 つの投稿リクエストがあります。1 つ - フィルターあり、2 つ目はフィルターなしです。

sendボタンアクションの私のコード:


xtype: 'button',
id: 'btn_srch_set',
text: 'Searh',
margin: '10 7 0 0',
width: '',
handler: function() {       
    var filters = new Array();

    var site_name = Ext.getCmp('txtFltrSiteName').getValue();
    if(site_name.length > 0)
        filters.push({dataIndex: 'site_name', type: 'string', value: site_name}); 

    var project_name = Ext.getCmp('txtFltrProjectName').getValue();
    if(project_name.length > 0)
        filters.push({dataIndex: 'project_name', type: 'string', value: project_name});

    var pm = Ext.getCmp('ddlFltrPM').getValue();
    if(pm && pm > 0)    
        filters.push({dataIndex: 'project_manager_id', type: 'int', value: {'eq':pm}});

    // many other fields

    listOfSites.filters.removeAll();
    if(filters.length > 0)  
        listOfSites.filters.addFilters(filters);
    listOfSites.store.load(); 
}



PSボタンハンドラー関数で次の行
を上書きすると:search

filters.push({dataIndex: 'project_manager_id', type: 'string', value: pm});

すべてが問題なく、リクエストが 1 つしかないため、ここに問題がある可能性があります。しかし、私は立ち往生しており、なぜそのように機能するのかわかりません。


助けてくれてありがとう、
スタニスラフ。

UPD*

        var filters = {
        ftype: 'filters',
        // encode and local configuration options defined previously for easier reuse
        encode: true, // json encode the filter query
        local: false,
        filters: [{
            type: 'string',
            dataIndex: 'site_name'
        }, {
            type: 'date',
            dataIndex: 'startdate'
        }, {
            type: 'string',
            dataIndex: 'project_name'

        // more fields below
4

1 に答える 1

5

フォローしてみてください

if(filters.length > 0)  
    listOfSites.filters.addFilters(filters);
else
    listOfSites.store.load();

addFilters()すでに電話するかもしれませんsync()

于 2012-11-23T12:59:19.580 に答える