2016-03-23 5 views
0

Ich habe ein Kendo Treeview, das die übergeordneten Knoten anzeigt, aber die untergeordneten Knoten werden nicht angezeigt. Kann mir jemand sagen, wo ich falsch liege? Ich bin neu in diesem Konzept. Ich folgte dem untenstehenden Link, aber es funktioniert nicht. http://demos.telerik.com/kendo-ui/treeview/remote-data-bindingKendo treeview HierarchicalDataSource zeigt keine untergeordneten Knoten an

function treeView() { 
     var treeM = new kendo.data.HierarchicalDataSource({ 
      schema: { 
       data: function (response) { 
        console.log("response" + JSON.stringify(response)); 
        var rdata = {}; 
        if (response.d) { 
         rdata = JSON.parse(response.d); 
        } 
        else { 
         rdata = response; 
        } 
        return rdata; // ASMX services return JSON in the following format { "d": <result> }. 
       }, 
       model: { 
        hasChildren: true, 
        id: "ID", 
        expanded: true, 
        fields: { 
         ID: { editable: false, nullable: false, type: "string" }, 
         LINK: { editable: true, nullable: true, type: "string" }, 
              }, 
       }, 
      }, 
      transport: { 
       read: { 
        url: "/getParent", 
        contentType: "application/json; charset=utf-8", 
        type: "POST", 
        datatype: "json" 
       }, 
       parameterMap: function (data, type) { 
        if ((type == "update") || (type == "create") || (type == "destroy")) { 
         console.log('parameterMap:'); 
         return JSON.stringify({ "LinksJson": data }); 
         console.log(JSON.stringify(data)); 
        } else { 
         return data; 
        } 
       } 
      } 
     }); 

       $("#treeview1").kendoTreeView({ 
      dataSource: treeM, 
      dataValueField: "ID", 
      dataTextField: ["LINK","Name"] 
     }); 

    } 

    $("#treeview").on("click", ".k-in", function (e) { 
     var tree = $("#treeview").data('kendoTreeView'); 
     tree.toggle($(e.target).closest(".k-item")); 
    }); 


    $(document).ready(function() { 
     treeView(); 
    }); 

Service:

[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string getParent() 
    { 
     using (var context = new Data.Entities()) 
     { 
      IQueryable<ERPv2.Data.Links> dataQuery = from x in context.Links 
                  where x.ParentID == 68 
                 select x; 
      var newQry = dataQuery.AsEnumerable().Select(c => new 
         { 
          ID = c.ID, 
           Name = c.Name, 
          Children = HasChildren(231) 
         }); 
      JavaScriptSerializer JSON = new JavaScriptSerializer(); 
      return JSON.Serialize(newQry); 

     } 
    } 




     [WebMethod] 
     [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
     public bool HasChildren(int ID) 
     { 
      using (var context = new Data.Entities()) 
      { 
       IQueryable<ERPv2.Data.Links> dataQuery = from x in contextLinks 
                  where x.ParentID == ID 
                  select x; 

       return dataQuery.AsEnumerable().Any(); 
      } 
     } 

Antwort

0

Auch wenn Sie versuchen, die untergeordneten Knoten zu sehen, wird es versuchen, getLinks zu rufen und nicht die getreports. Von dem, was ich gesehen habe, sollten Sie nur eine Methode haben, um Eltern und Kinder zu bekommen. Kann ein Array innerhalb jedes übergeordneten Knotens sein. Können Sie die Daten von GetReports-Methode in getlinks selbst kombinieren und es eine Chance geben.

+0

Vielen Dank für Ihren Rat, ich habe versucht, was Sie von 1 Tag gesagt, aber irgendwie kann ich nicht die Abfrage schreiben. Ich habe die LINQ-Abfrage hinzugefügt können Sie überprüfen, und schlagen Sie mir vor und aktualisiert den Code – Nethra

Verwandte Themen