2016-03-23 1 views
0

Ich verwende ExtJs6, wenn ich einen Artikel in einer Combobox wählen Ich will es einen Laden laden einen Proxy verwenden, Übergabe eines Parameters von combobbox Auswahl an den Proxy. Ich möchte auch den Benutzernamen und das Passwort aus dem Anmeldebildschirm hinzufügen. (Weiß nicht, wie man diesen Teil speichern und wiederverwenden)ExtJS geben Parameter aus Combobox Auswahl zu speichern Erstellung über Proxy

Bisher ist die Methode, die ich auf Combobox Auswahl zu benutzen ist wie folgt.

onComboboxSelect: function (combo, record, eOpts) { 

    console.log('new listener was hit'); 
    //console.log(combo); 
    //console.log(record); 
    //console.log(eOpts); 
    //debugger; 

    //return selected Item 
    var selectedValue = record.get('ClientName'); 
    var selectedCID = record.get('ClientID'); 

    //return clientId from store 
    //var storeClients = Ext.data.StoreManager.lookup('myClientListStoreID'); 
    //var targetRecord = storeClients.findRecord('ClientName', selectedValue); 

    var newStore = Ext.create('ExtApplication1.store.PositionsStore'); 
    console.log(newStore); 
    newStore.load({ 
     callback: function (records) { 
      Ext.each(records, function (record) { 
       console.log(record); 
      }); 
     } 
    }); 
    console.log(newStore); 

    //load positions store??? 
    //var x1 = Ext.data.StoreManager.lookup('myStore'); 
    //var x2 = Ext.data.StoreManager; 
    //console.log(x1); 
}, 

Wie kann ich einen Parameter aus, dass ... SELECTEDCID, und übergeben Sie in den Laden Schöpfung unter

var encodedFilename = Ext.urlEncode({ 
user: 'myUsername', 
pw: 'myPassword', 
cid: 'paramater from combobox selection' 
}); 

Ext.define('ExtApplication1.store.PositionsStore', { 
extend: 'Ext.data.Store', 

model: 'ExtApplication1.model.PositionsModel', 

storeId: 'myStore', 

alias: 'store.positionsstore', 

proxy: { 

    type: 'ajax', 
    url: 'http://localhost:51020/Service4.svc/DownloadPos?' + encodedFilename, 

    reader: { 
     type: 'json', 
     rootProperty: 'data' 
    } 

}, 

autoLoad: false 

});

schließlich, wie kann ich auch den Benutzernamen und das Passwort von meinem Login-Fenster übergeben.

I edited COMBOBOX HIER SELECT ......

onComboboxSelect: function (combo, record, eOpts) { 

    console.log('new listener was hit'); 
    //console.log(combo); 
    //console.log(record); 
    //console.log(eOpts); 
    //debugger; 

    //return selected Item 
    var selectedValue = record.get('ClientName'); 
    var selectedCID = record.get('ClientID'); 


    //return clientId from store 
    //var storeClients = Ext.data.StoreManager.lookup   
('myClientListStoreID'); 
    //var targetRecord = storeClients.findRecord('ClientName', 
selectedValue); 


    //find the grid that was created 
    var mainPortalView = Ext.getCmp('mainportalID'); 
    var targetGrid = mainPortalView.down('grid'); 

    //find the store associated with that grid 
    var targetStore = targetGrid.getStore(); 
    console.log(targetStore); 
    //debugger 

    //load and add items to the store 

    //targetStore.proxy.extraParams = { 
    // user: 'stephen', 
    // pw: 'forero', 
    // cid: selectedCID 
    //}; 

    targetStore.load({ 
     params: { 
      user: 'stephen', 
      pw: 'forero', 
      cid: selectedCID 
     }, 
     callback: function (records) { 
      Ext.each(records, function (record) { 
       console.log(record); 
      }); 

      console.log(targetStore); 

      //var targetStore2 = targetGrid.getStore(); 
      //console.log(targetStore2); 
     } 
    }); 

I CREATE die Ansicht mit GRID HIER

var myStore = Ext.create('ExtApplication1.store.PositionsStore'); 

var gridSummary = Ext.create('Ext.grid.Panel', { 
    store: myStore, 
    width: 600, 
    title: 'my first grid', 
    columns: [ 
     { 
      text: 'AcctNum', 
      dataIndex: 'AcctNum', 
      width: 100 
     }, 
     { 
      text: 'AcctShortCode', 
      dataIndex: 'AcctShortCode', 
      flex: 1 
     }, 
     { 
      text: 'Exchange', 
      dataIndex: 'Exchange', 
      width: 200 
     } 
    ] 
}); 



Ext.define('ExtApplication1.view.main.MainPortal', { 
    extend: 'Ext.panel.Panel', 

    xtype: 'mainportal', 

    alias: 'widget.mainportal', 

    id: 'mainportalID', 

    html: 'user... this is the main portal window', 

    autoScroll: true, 

    bodyPadding: 10, 

    items: [ 
     gridSummary 
    ] 

}); 

Antwort

1

Sie params für store.load Methode übergeben kann.

newStore.load({ 
    params: { 
     user: 'myUsername', 
     pw: 'myPassword', 
     cid: 'paramater from combobox selection' 
    }, 
    callback: function (records) { 
     Ext.each(records, function (record) { 
      console.log(record); 
     }); 
    } 
}); 
+0

funktioniert! Danke! – solarissf

0

Das Wichtigste zuerst -

1) Sie erstellen einen Speicher jedes Mal ein Wert ausgewählt wird. Bitte nehmen Sie diesen Speicher Schaffung Code aus dem Auswahl Rückruf

2) von Ihrem Speicher-Proxy, der sichtbar, dass Sie Benutzername und Passwort sind vorbei (???) als Parameter zu einem Get Anruf. Bitte denken Sie nicht einmal daran, das Passwort dort zu verwenden. Das Passwort sollte nur für einen Service eingegeben werden - den Login-Service. Auch dort solltest du das Passwort verschlüsseln.

nun Ihre Frage zu beantworten - In Ihrem wählen Rückruf, einen Verweis auf den Laden und dann gehen Sie wie folgt -

var store = [YOUR_STORE]; store.proxy.extraParams = { user: 'myUsername' pw: 'myPassword', cid: 'paramater from combobox selection' }; store.load(....);

oder wenn Sie wollen die cid setzen,

store.proxy.extraParams.cid = '......'; store.load(........);

Hoffnung, das hilft :)

+0

so sehe ich, was du meinst, wie ich ein Geschäft jedes Mal schuf. Ich habe es in den obigen Code geändert. Was mache ich falsch? Jetzt wird der Proxy nie gestartet. – solarissf

+0

vergiss es ... habe es herausgefunden ... Ich habe den obigen Code angepasst, um zu zeigen, wie – solarissf