2012-03-27 3 views
0

J'utilise Grid kendo mais j'ai un problème que je ne suis pas en mesure de lier ma grille avec les données de webservice plz help meReliure Kendo Grille avec Webservice

Mon apparence de service Web comme celui-ci

[WebMethod] 
     public string GetCustomers() 
     { 
      string data = default(string); 
      using (var documentStore = new DocumentStore { Url = "http://haseeb-pc:8080/" }.Initialize()) 
      { 
       using (var session = documentStore.OpenSession()) 
       { 
        var query = session.Query<Customer>().Select(customer => new 
                       { 
                        FirstName = customer.FirstName, 
                        LastName = customer.LastName, 
                        Email = customer.Email, 
                       }).Take(20); 
        var serializer = new JavaScriptSerializer(); 
        return serializer.Serialize(query); 
       } 
      } 
     } 

et moi avons une page html qui ont une div

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 
    <script src="../Scripts/jquery-1.7.min.js" type="text/javascript"></script> 
    <script src="../Scripts/KendoScript.js" type="text/javascript"></script> 
    <script src="../Scripts/KendoScripts/kendo.all.min.js" type="text/javascript"></script> 
    <link href="../Scripts/styles/kendo.common.min.css" rel="stylesheet" type="text/css" /> 
    <link href="../Scripts/styles/kendo.default.min.css" rel="stylesheet" type="text/css" /> 
    <script src="../Scripts/KendoScripts/kendo.web.min.js" type="text/javascript"></script> 
</head> 
<body> 
    <div id="CustomerGridView"> 
    </div> 
</body> 
</html> 

enfin mon fichier de script est la suivante:

$(function() { 
    alert("Welcome To Kendo"); 
    var dataSource = new kendo.data.DataSource(
      { 
       transport: { 
        read: { 
         contentType: "application/json; charset=utf-8", 
         type: "POST", 
         dataType: "json", 
         url: "/CustomerService.asmx/GetCustomers" 


        } 
       }, 
       pageSize: 10, 
       schema: { 
        data: "d" 
       } 
      }); 

    alert(dataSource); 
    $("#CustomerGridView").kendoGrid({ 
     dataSource: dataSource, 
     height: 250, 
     scrollable: true, 
     sortable: true, 
     pageable: true, 
     columns: [ 
     { field: "FirstName", title: "First Name" }, 
     { field: "LastName", title: "Last Name" }, 
     { field: "Email", title: "Email" } 


     ], 
     editable: "popup", 
     toolbar: ["create"] 
    }); 

}); 

mon problème est ma grille de kendo ne lie pas plz me aider à lier ma grille

+0

Les scripts de grille sont inclus deux fois - kendo.all.min.js et kendo.web. min.js. –

Répondre

0

Essayez de changer le type de retour de GetCustomers à l'objet au lieu de chaîne et ne renvoient pas la version sérialisée de « requête ». Il suffit de retourner "requête".

+0

rien n'arrive chère encore ma grille n'est pas lier –

+0

quand j'ouvre firebug j'ai vu cette erreur {"Message": "primitive JSON invalide: prendre .................... .... –

+0

Vous ne savez pas si c'est le problème, mais je pense que vous devez supprimer la virgule après "Email = customer.Email" dans votre méthode Web GetCustomers. – flayto

0

Vous pouvez essayer cela.

Appelez le service, utilisez l'objet var pour stocker le contenu du service.

var xhReq = new XMLHttpRequest(); 
xhReq.open("POST", '/CustomerService.asmx/GetCustomers', false); 
xhReq.send(null); 
var jsonObject = JSON.parse(xhReq.responseText); 

créer une source de données kendo, utiliser l'objet var comme données.

var dataSource = new kendo.data.DataSource({ 
         page: 1, 
         pageSize: 10, 
         data: jsonObject, 
         schema: { 
          model: { 
           id: "ID", // model id 
           fields: { 
            //FirstName: { type: "string", editable: false,/*other attributes*/ }, 
            /*your fields*/ 
           } 
          } 
         } 
       }); 

lier votre kendogrid avec kendo datasource

$("#CustomerGridView").kendoGrid({ 
     dataSource: dataSource, 
     height: 250, 
     scrollable: true, 
     sortable: true, 
     pageable: true, 
     columns: [ 
     { field: "FirstName", title: "First Name" }, 
     { field: "LastName", title: "Last Name" }, 
     { field: "Email", title: "Email" } 


     ], 
     editable: "popup", 
     toolbar: ["create"] 
    }); 

}); 

J'espère que cela peut vous aider :)