2009-04-30 3 views
1

Ich habe ein Problem (vielleicht ist es mein Fehler mit falsch ExtJs, ich hoffe ich tun) mit ExtJs, um eine Cascading-Combos in einem Formular zu tun. Dies ist die Situation:ExtJs Cascading-Combos Problem

  1. Ich habe 3 Combos, Zonen, Regionen, Städte
  2. Als ich auf einem von ihnen, um klicken, wird das zugehörig man eine Ajax-Anforderung aktualisiert wird, machen mit Json als Datenformat (so auch wenn ich denke, dass es nicht sinnvoll ist, ist die Reihenfolge die normale Sequenz Zones -> Regionen -> Städte)
  3. auch wenn es nicht so wichtig, ich bin auf einem ASP.NET MVC-Back-End-

Das Problem entsteht, wenn ich, als die erste Operation, die ich tue, zuerst auf einen Nachkommen und dann auf den Eltern, zum Beispiel, wenn ich öffnen Sie einfach vor den Regionen, öffnen Sie dann Zonen und wählen Sie eine aus. Ich hoffe, dass sie die Regionen gut füllen wird. Aber nichts passiert. Auch in diesem Fall ist die Ajax-Anfrage korrekt ausgeführt und die resultierenden Json-Daten werden gut zurückgegeben, da sie "wenn ich die Klickreihenfolge respektiere (Zonen -> Regionen)" zurückgegeben habe.

Lassen Sie mich sagen, wenn, wenn ich in der Seite das erste Mal und ein ich eine normale Klick-Reihenfolge, alles gut geht, aber wenn ich die Klick-Reihenfolge ändern, wie ich schon sagte, werden die Dinge nie funktionieren Mehr.

Der Code, den wir, dass die Verwendung zu tun ist:

var RegionsStore = new Ext.data.JsonStore({ 
           url:'/mypath/blabla', 
           fields:['Value','Text'] 
        }); 
Ext.onReady(function() { 
    Ext.getCmp('ext-Area').on('select', function(sender, item) { 
     var target = Ext.getCmp('ext-Regions'); 
     target.setDisabled(true); 
     target.setValue(''); 
     target.store.removeAll(); 
     target.displayField = 'Text'; 
     target.valueField = 'Value'; 
     target.store = RegionsStore; 
     target.store.reload({ 
       params: { 
        data: 'regions', 
        discriminator: 'area', 
        value: sender.getValue() 
       } 
     }); 
     target.setDisabled(false); 
    }); 
}); 

Vielen Dank im Voraus für alle Anregungen!

Antwort

0

Rufen Sie combo-2.store.clearFilter(); im ersten Combo-Auswahl-Handler auf, um den zweiten internen Combo-Filter zu löschen, bevor Sie ihn aktualisieren.

+0

Ihre Lösung immer noch nicht funktioniert ... – Hoghweed

+0

Haben Sie setzen es danach? target.store.reload ({ params: { Daten: 'Regionen', Scheider: 'Flächen', Wert: sender.getValue() } target.store.clearFilter(); – Thevs

+0

Und wahrscheinlich Außerdem muss der Wert der Zielkombination auf '' (leere Zeichenfolge) gesetzt werden. – Thevs