2017-04-04 4 views
0

Ich bekomme eine Reihe von Eigenschaften und möchte sie alle im Raster anzeigen.Wie bekomme ich Array-Datenquelle, Kendo-Grid?

Wie geht das? Ist es möglich?

Dies ist mein Code:

function StartBuild(ProfileProperties) { 
     var details = []; 
     for (i = 0; i < ProfileProperties.length; i++) { 
      details[i]=[{ name: ProfileProperties[i][0], email: ProfileProperties[i][1], phoneWork: ProfileProperties[i][2], Mobile: ProfileProperties[i][3], ManagerName: ProfileProperties[i][4] }]; 
     } 
      $(document).ready(function() { 
      var datasource = new kendo.data.DataSource({ 
       transport: { 
        type:"odata", 
        read: function (e) { 
         e.success(details); 
        }, 
        pageSize: 10, 
        batch: false, 
        schema: { 
         model: { 
          fields: { 
           name: { editable: false }, 
           Fname: { editable: false } 
          } 
         } 
        } 
       } 
      }); 
      $("#grid").kendoGrid({ 
       dataSource: datasource, 
       pegable: true, 
       sortable: { 
        mode: "single", 
        allowUnsort: false 
       }, 
       columns: [{ 
        field: "name", 
        title: "name", 
        filterable: { 
         cell: { 
          enabled:true 
         } 
        } 
       }, {//[Bild, nameP, email,phonework, Mobile, ManagerName] 
        field: "email", 
        title: "email" 
       }, { 
        field: "phoneWork", 
        title: "phoneWork" 
       }, { 
        field: "Mobile", 
        title: "Mobile" 
       }, { 
        field: "Manager", 
        title: "Manager" 
       }], 
       filterable: { 
        mode: "row" 
       }, 
      }); 
     }); 
    } 

Nur wenn ich details[0] schreiben zeigt es die ersten Eigenschaften sonst nichts zeigen nicht.

+0

fügen Sie bitte Ihre HTML hinzu – Dwhitz

Antwort

0

Es scheint, als gäbe es ein paar Probleme.

http://dojo.telerik.com/@Stephen/uVOjAk

Erstens ist der Transport-Setup nicht korrekt. pageSize, Batch und Schema sind nicht Teil der Transportkonfiguration ... Sie müssen sie aus dem Transportblock nehmen und sie nur im Datenquellenblock haben.

Sie wollen:

var datasource = new kendo.data.DataSource({ 
    transport: { 
     type:"odata", 
     read: function (e) { 
      e.success(details); 
     } 
    }, 
    pageSize: 10, 
    batch: false, 
    schema: { 
     model: { 
      fields: { 
       name: { editable: false }, 
       Fname: { editable: false } 
      } 
     } 
    } 
}); 

statt (was Sie haben):

var datasource = new kendo.data.DataSource({ 
    transport: { 
     type:"odata", 
     read: function (e) { 
      e.success(details); 
     }, 
     pageSize: 10, 
     batch: false, 
     schema: { 
      model: { 
       fields: { 
        name: { editable: false }, 
        Fname: { editable: false } 
       } 
      } 
     } 
    } 
}); 

Zweitens sind die Details ein Array von Objekten sein muss, nicht ein Array aus einer Anordnung von ein Objekt.

Sie wollen:

var details = []; 
for (i = 0; i < ProfileProperties.length; i++) { 
    details.push({ name: ProfileProperties[i][0], email: ProfileProperties[i][1], phoneWork: ProfileProperties[i][2], Mobile: ProfileProperties[i][3], ManagerName: ProfileProperties[i][4] }); 
} 

Statt:

var details = []; 
for (i = 0; i < ProfileProperties.length; i++) { 
    details[i]=[{ name: ProfileProperties[i][0], email: ProfileProperties[i][1], phoneWork: ProfileProperties[i][2], Mobile: ProfileProperties[i][3], ManagerName: ProfileProperties[i][4] }]; 
} 

Zwei andere Probleme, die nicht direkt ein Problem verursachen, sind aber nicht korrekt sind:

  1. Ihre dataSource.schema Die Konfiguration passt nicht zu Ihren tatsächlichen Daten. Das Schema muss wirklich mit den Feldern der tatsächlichen Daten übereinstimmen, andernfalls kann es die Konfiguration nicht abgleichen.
  2. Sie haben in der Grid-Konfiguration "pageable" falsch geschrieben.