forms - एक्स्टजेएस फॉर्म दो बार रेखांकित किया गया



extjs filter (1)

निम्नलिखित का प्रयास करें

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

addFilters() पहले से ही sync() कॉल कर सकते हैं sync()

मेरे पास इस तरह की खोज (फ़िल्टरिंग) फ़ील्ड के साथ एक फ़ॉर्म है:

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 बटन पर क्लिक करता हूं, मेरे पास दो पोस्ट का अनुरोध होता है। एक - इसमें फिल्टर के साथ, दूसरा बिना है

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



पुनश्च
जब मैं search बटन हैंडलर में इस पंक्ति को ओवरराइट करता हूं:

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

Evrything ठीक है और केवल एक ही अनुरोध है, इसलिए समस्या यहां हो सकती है। लेकिन मैं फंस गया हूं और मुझे पता नहीं है कि ऐसा क्यों काम करता है।


किसी भी मदद के लिए धन्यवाद,
स्टानिस्लाव।

युपीडी *

        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