2013-07-02 50 views
0

我在同一页面上都有TreeView和栅格,我需要从栅格数据填充TreeView。所以流程是这样的:从Kendo栅格数据填充Kendo TreeView

用户从下拉列表中选择一个东西,然后点击一个按钮 - > web服务调用 - >使用来自web服务的数据填充网格 - >使用一些网格数据按钮填充TreeView

填充树视图的逻辑是目前在这样的grid.dataSource.fetch()方法:

// this function is called when user clicks on the button 
function getData() { 
    grid.dataSource.read(); 
    grid.dataSource.page(1); 

    grid.dataSource.fetch(function() { 
     var data = this.data(); 
     ... // logic to massage the data to populate TreeView 
     ... 
    } 
} 

然而,如果用户再次在按钮选择从下拉和点击另一件事,这一点。 data()似乎具有旧数据(从第一次开始),因此TreeView中填充了旧数据。

除了fetch()之外,哪个方法是正确的事件/方法我应该使用它来放置我的逻辑?

回答

0

我认为你应该使用kendoGrid的dataBound事件。 http://docs.kendoui.com/api/web/grid#events-dataBound

这里是kendoGrid数据绑定事件处理程序的示例代码:

function Grid_DataBound(e) { 
    console.log("Grid_DataBound", e); 

    var grid = e.sender; 
    var dataItems = grid.dataSource.view(); 

    console.log(dataItems); 

    var treeData = new Array(); 

    for (var i = 0; i < dataItems.length; i++) { 
     treeData.push({ 
      OrderId: dataItems[i].OrderID, 
      ShipName: dataItems[i].ShipName 
     }); 
    } 

    var dataSource = new kendo.data.HierarchicalDataSource({ 
     data: treeData, 
     schema: { 
      model: { 
       id: "OrderId" 
      } 
     } 
    }); 

    $("#treeview").data("kendoTreeView").setDataSource(dataSource); 
} 

让我知道如果你需要完整的示例代码。