0

extjs 2.2 から extjs 4.0 に移行しています。私のコードは、いくつかの ext フィールドを POST する php (プロキシ URL) を介してグリッド データをフィルタリングします。

etx ストア:

var store = Ext.create('Ext.data.Store', {
    model: 'Company',
    remoteSort: true,
    remoteFilter: true,
    proxy: {
        // load using script tags for cross domain, if the data in on the same domain as
        // this page, an HttpProxy would be better
        type: 'ajax',
        url: "logica_de_aplicacao/usuario/grid_usuarios_dados.php",
        reader: {
            root: 'results',
            totalProperty: 'total'
        },
        // sends single sort as multi parameter
        simpleSortMode: true
    },
    sorters: [{
        property: 'nome',
        direction: 'ASC'
    }]
});

ext フィールド (2 つの例、フィールドが多すぎます):

var txtLogin = new Ext.form.TextField({
                    fieldLabel: "Login",
                    width: 200
                });

var txtAtivo = new Ext.form.ComboBox({
                    fieldLabel: 'Ativo',
                    width: 200,
                    name: 'ativo',
                    editable: false,
                    disableKeyFilter: true,
                    forceSelection: true,
                    triggerAction: 'all',
                    mode: 'local',
                    store: new Ext.data.SimpleStore({
                        id: 0,
                        fields: ['value', 'text'],
                        data : [['S', 'Sim'], ['N', 'Não']]
                    }),
                    valueField: 'value',
                    displayField: 'text',
                    hiddenName: 'ativo'
                });

フィルタリング:

tbar: [{
        text: "Adicionar Filtro", //add filter
        tooltip: "Filtre os resultados",
        iconCls:"icone_filtro",
        handler: function() {
            iniciaPesquisa();
        }
    }, {
        text: "Remover Filtro", //remove filter
        tooltip: "Cancelar o filtro",
        iconCls:"icone_cancel_filtro",
        handler: function() {
            store.baseParams = {
                login: "",
                nome: "",
                privilegio: "",
                ativo: "",
                municipio: ""
            };
            store.removeAll();
            store.load();

        }
    }],

PHP:

...
$login = $_POST["login"];
...
$ativo = $_POST["ativo"];

ext 2.2 では、通常は store.load() アクションでフィールド コンテンツをポストしますが、現在は何も起こりません。これらのフィールドをext 4に投稿するにはどうすればよいですか?

(悪い英語をお詫びします)

4

2 に答える 2

0
var store = Ext.create('Ext.data.Store', {
    model: 'Company',
    remoteSort: true,
    remoteFilter: true,
    proxy: {
        // load using script tags for cross domain, if the data in on the same domain as
        // this page, an HttpProxy would be better
        type: 'ajax',
        url: "logica_de_aplicacao/usuario/grid_usuarios_dados.php",
baseParams: {  //here you can define params you want to be sent on each request from this store
                        login: "",
                nome: "",
                privilegio: "",
                ativo: "",
                municipio: ""
                        },
        reader: {
            root: 'results',
            totalProperty: 'total'
        },
        // sends single sort as multi parameter
        simpleSortMode: true
    },
    sorters: [{
        property: 'nome',
        direction: 'ASC'
    }]
});

tbar: [{
        text: "Adicionar Filtro", //add filter
        tooltip: "Filtre os resultados",
        iconCls:"icone_filtro",
        handler: function() {
            iniciaPesquisa();
        }
    }, {
        text: "Remover Filtro", //remove filter
        tooltip: "Cancelar o filtro",
        iconCls:"icone_cancel_filtro",
        id : 'BtnRemoveFilter', // added this
        handler: function() {
            store.baseParams = {
                login: "",
                nome: "",
                privilegio: "",
                ativo: "",
                municipio: ""
            };
            store.removeAll();
            store.load();

        }
    }],

var Btn = Ext.getCmp('BtnRemoveFilter');
    Btn.on('click', function(){
        store.load({
                        params: {  //here you can define params on 'per request' basis
                                login: "the value u want to pass",
                nome: "the value u want to pass",
                privilegio: "the value u want to pass",
                ativo: "the value u want to pass",
                municipio: "the value u want to pass"
                                }
                        })
    });

このコードが機能しているかどうかを試してください。これがあなたが望むものだと思います

于 2013-02-19T15:15:49.040 に答える
0

それは実際には今より簡単です、ただ使用してくださいstore.clearFilter()

store.clearFilter();
store.removeAll();
store.load();
于 2013-02-19T14:57:42.673 に答える