2016-06-30 7 views
1

Ext JS 5.1Wie man einen Teil des Speichers in ein Raster laden

ich ein Studenten-Management-System und 4 Klassen von 1. bis 4.. Alle Klassen haben jeweils 4 Kurse. Ich habe alle Kurse ins Netz gerufen, aber ich möchte nur Kurse anrufen, die dieselbe Klasse wie der Student haben. (ZB ich auf der 4. Klasse bin, so kann ich nur die 4. Klasse Kurse auf dem Gitter sehen)

Ich mag nur auf einen Teil des Code wie folgt, wenn es möglich ist:

if (refs.txtClass.value === refs.lesClass.value){ 

     // load the grid that only equals txtClass.value 
     // txtClass is Class No of a student, lesClass is Class No of grid 

    } 

Student Klassenreferenz

items: [{ 
     xtype: 'label', 
     flex: 1, 
     reference: 'txtClass' 
     }] 

Grid Code

items: [ 
{ 
    xtype: 'gridpanel', 
    flex: 1, 
    reference: 'courseList', 
    itemId: 'courseList', 
    store: 'CourseStore', 
    columns: [ 
     { 
      xtype: 'gridcolumn', 
      reference: 'lesId', 
      itemId: 'lesId', 
      dataIndex: 'lesId', 
      text: 'DERS KODU' 
     }, 
     { 
      xtype: 'gridcolumn', 
      reference: 'lesClass', 
      itemId: 'lesClass', 
      dataIndex: 'lesClass', 
      text: 'SINIF' 
     }, 
     { 
      xtype: 'gridcolumn', 
      reference: 'lesName', 
      itemId: 'lesName', 
      width: 200, 
      dataIndex: 'lesName', 
      text: 'DERS ADI' 
     }, 
     { 
      xtype: 'gridcolumn', 
      reference: 'lesCredit', 
      itemId: 'lesCredit', 
      dataIndex: 'lesCredit', 
      text: 'DERS KREDİSİ' 
     }, 
     { 
      xtype: 'gridcolumn', 
      reference: 'lesTeacher', 
      itemId: 'lesTeacher', 
      width: 600, 
      dataIndex: 'lesTeacher', 
      text: 'OKUTMAN' 
     } 
    ] 
}] 
+0

Die kurze Antwort ist, hängt es. Haben Sie die Daten bereits geladen und möchten sie lokal filtern? Oder möchten Sie nur diese Elemente vom Server laden? –

+0

Ich habe von local geladen, noch kein Server @EvanTrimboli – chnselim

Antwort

2

Wenn Sie alle Daten lokal geladen haben, können Sie den Filter basierend auf der Bedingung filtern.

filterBy (fn, [Scope])
Filter durch eine Funktion. Die angegebene Funktion wird für jeden Datensatz in diesem Speicher aufgerufen. Wenn die Funktion wahr zurückgibt, ist der Datensatz enthalten, andernfalls wird er ausgefiltert. Wenn der Speicher gefiltert wird, funktionieren die meisten Methoden für den Zugriff auf Geschäftsdaten nur innerhalb der gefilterten Datensätze. Die bemerkenswerte Ausnahme ist getById.

store.filterBy(function() 
{ 
if (refs.txtClass.value === refs.lesClass.value){ 
     return true; 
    } 
    else { 
     return false; 
    } 
},this); 

Sie können auch Verwendung von Filtern Config auf den Laden machen.

filters: [ 
    function(item) { 
     //condition here 
    } 
] 
+0

hallo, zuerst sollte ich den Nachrender dieser Seite hinzufügen Ich habe, geben Sie mir "Speicher ist nicht definiert." Oder "Ext.StoreMgr.lookup (" CourseStore "). filterBy (this, function() .." funktioniert auch nicht . Ich habe die Daten von Store mit DataIndex aufgerufen, das ist richtig, nicht wahr? – chnselim

+0

Sie können diesen Nachläufer auch tun. Sie können die Gitterreferenz wie grid.getStore(); – Saloo

1
You can also loadData method of store to load some part of data in store : 
    var arr = [], 
    store = yourgrid.getStore(); 
    store.each(function(rec) { 
    if (// condition to create the part of data want to be loaded)){ 
     arr.push(rec); 
    } 
    store.loadData(arr);  

Sie auch Slice-Verfahren verwendet werden, können einige Daten auf der Grundlage des zulässigen Bereichs zu speichern store.loadData (oldstoreRecords.slice (Start, Ende);