2017-02-23 1 views
2

Ich versuche, einen Combobox-Wert zu bearbeiten. Aber was passiert, wenn ich eine Rasterzelle klicken der alte Wert verschwindet ich behalten möchten eine der und auch vermeiden, den Benutzer die Werte auszuwählen, bilden die Kombinationsfeld selbst und nicht andere Werte als die in der Dropdown-Wie kann ich verhindern, dass ein angeklicktes Kombinationsfeld seinen Wert löscht?

Wie kann ich diese beiden Dinge erreichen.

{ 
    text: 'Food Items', 
    xtype: 'gridcolumn', 
    dataIndex: 'food_lister', 
    flex: 1, 
    renderer: function (value) { 
     console.log() 
     if (Ext.isNumber(value)) { 
      var store = this.getEditor().getStore(); 
      return store.findRecord('foodid', value).get('fooddescp'); 
     } 
     return value; 
    }, 
    editor: { 
     xtype: 'combobox', 
     allowBlank: true, 
     displayField: "fooddescp", 
     valueField: "foodid", 
     queryMode: 'local', 
     mapperId: 'getfooddescrip', 
     lastQuery: '', 
     forceSelection: true, 
     listeners: { 
      expand: function() { 
       var call = this.up('foodgrid[itemId=fooditemgrid]').getSelectionModel().selection.record.data.foodname.trim(); 
       this.store.clearFilter(); 
       //this.store.filter('call',call); 
       this.store.filter({ 
        property: 'call', 
        value: call, 
        exactMatch: true 
       }) 
      } 
     } 
    } 
} 

As soon as I click that cell I data gets reset to null.How can i retain the already present data , without getting that to null

See this pic_new

Antwort

1

Verwenden editable : false in Combo überprüfen Sie die aktualisierte Beispiel

click here

Edit: Wie pro Ihren Kommentar, wenn Sie noch wan t verwenden editierbar wahr und Beschrän den anderen Wert als den Laden Sie es in Zellbearbeitungs Ereignis behandeln müssen validateedit

plugins: { 
    ptype: 'cellediting', 
    clicksToEdit: 1, 
    listeners: { 
     validateedit: function(editor, context, eOpts){ 
      var store = context.column.getEditor().store, 
       record = context.record; 
      if(store.find('id',context.value) === -1){ 
      context.cancel = true; 
      } 
     } 
    } 
} 

Above-Code auf meinem Beispiel basiert. Bitte überprüfen Sie das laufende Beispiel in meinem fiddle

+0

Ja. Aber, wenn ich 'editale: false' benutze, kann ich nicht tippen und die verwandten Suchen richtig bekommen? Wie wenn der Datensatz ECE ist, und ich schreibe einfach "E" gibt es mir die Listen der Artikel mit E richtig?, Jede mögliche Lösung außer dieser –

+0

ok habe es lassen Sie mich überprüfen, dass –

+1

überprüfen Sie die Geige in der Antwort –

Verwandte Themen