2016-06-29 12 views
0

Ich habe ein Raster erstellt und jetzt versuche ich Rasterdaten und Spalte aus XML zu laden. Meine Spalte kommt vom Header-Tag und dessen Laden, aber Daten, die vom G-Tag kommen, werden nicht geladen. Code:Grid-Daten werden nicht von XML geladen

initComponent: function() { 
    this.fields = []; 
    this.columns = []; 
    this.data = []; 
    Ext.Ajax.request({ 
         url: 'XML/hart.xml', 
         scope: this, 
         timeout: global_constants.TIMEOUT, 
         method: "GET", 
         disableCaching: true, 
         failure: function(response) { 
          utils.showOKErrorMsg(sdisMsg.ajaxRequestFailed); 
         }, 
         success: function(response) { 
          debugger; 
          var datas = response.responseXML; 
          Ext.each(datas.getElementsByTagName("HEADER"), function(header) { 
           this.buildField(header); 
           this.buildColumn(header); 
          }, this); 
          Ext.each(datas.getElementsByTagName("G"), function (columnData) { 
           this.fieldLength = this.fields.length; 
           this.record = []; 
           for (i = 0; i < this.fieldLength; i++) { 
            this.record.push(columnData); 
           }     
           this.data.push(this.record); 
          }, this); 
           this.store = new Ext.data.ArrayStore({ 
            fields : this.fields 
           }); 
           this.store.loadData(this.data); 
         } 
        }); 
    buildField: function(header) { 
    this.fields.push({ 
     name: header.getAttribute("DATAINDEX") 
    }); 
    buildColumn: function(header) { 
    var hiddenflg = !(header.getAttribute("VISIBLE")); 
    if (header.getAttribute("VISIBLE") == "false") 
     hiddenflg = true; 
    var strHeaderName = ''; 
    if ((Ext.isIE && !PC.common.isIE10())) 
     strHeaderName = header.text; 
    else 
     strHeaderName = header.textContent; 
    var strToolTip = ""; 
    this.columns.push({ 
     header: Ext.util.Format.htmlEncode(strHeaderName), 
     tooltip: strToolTip, 
     dataIndex: header.getAttribute("DATAINDEX"), 
     width: parseInt(header.getAttribute("LENGTH")), 
     metaID: header.getAttribute("M"), 
     enableHdMenu: false, 
     hidden: hiddenflg, 
     menuDisabled: true, 
     sortable: false, 
     scope: this, 
     /*renderer : function (value, metaData, record, rowIndex, colIndex, store){ 
      debugger; 

     },*/ 
     fixed: false, 
     expanded: true 
    }); 
}, 
} 

-Code für das Netz: In grid Ich gebe zu speichern und Spalten.

{xtype: 'panel', 
       title: "Search Result", 
       height:500, 
       items: [{ 
        xtype: 'grid', 
        id: 'COHART_GRID', 
        autoHeight: true, 
        selType: 'checkboxmodel', 
        frame: true, 
        store: this.store, 
        autoHeight: true, 
        stripeRows: true, 
        columns: this.columns, 
        bbar: [{ 
         xtype: 'button', 
         text: 'Exclude', 
         handler: function() { 
          debugger; 
         } 
        }, { 
         xtype: 'button', 
         text: 'Include', 
         handler: function() { 
          //debugger; 
         } 
        }] 
       }] 

      } 

Ich werde meine XML bei Bedarf veröffentlichen. Danke für die Hilfe.

+0

meine Xml ist

Studien-ID
Studientitel
< HEADER VISIBLE = "true" LÄNGE = "100" ISSORTABLE = "true" data-type = "String" data = "STT" IsKey = "true" DOMAIN = ""> Die Studienmedikation David

+0

Bitte machen Sie eine [Geige] (http://fiddle.sencha.com), die das Problem aufweist. – Alexander

Antwort

1

In buildField Funktion verwenden Sie korrekt getAttribute, um auf die Attribute zuzugreifen, aber in this.record.push(columnData); fehlt es Ihnen.

Ich denke, wollen etwas entlang der Linien von

this.record = []; 
for (i = 0; i < this.fieldLength; i++) { 
    var fieldName = this.fields[i].name 
    this.record[fieldName] = columnData.getAttribute(fieldName); 
}     

Ungeprüfte und ohne Garantie, aber das über es sein sollte.

+0

nach diesen meinen Daten in this.store Anwendung kommt wie EXL : "" STU : "" SUB : "" – David

+0

Aber this.data richtigen Wert aufweist. – David

+0

Danke Ich habe ein paar Änderungen vorgenommen und es hat funktioniert. – David

Verwandte Themen