第一,你應該得到一個選定的樹視圖項目。例如,你可以使用onItemClick事件:
onItemClick: function(args) {
// here you can get the data of the item you clicked
var itemData = args.itemData;
}
接下來,您可以通過過濾選擇的TreeView項數據的數據網格(用於演示目的,我想所有的樹視圖項具有獨特id
場)。
var gridDataSource = new DevExpress.data.DataSource({
load: function(options) {
var filter = options.filter;
if(filter) {
// return filtered data
}
// return all data
}
});
//...
// event handler from the previous step
onItemClick: function(args) {
var itemId = args.itemData.id;
// set filter for the datagrid and load datasource
gridDataSource.filter(["folderId", itemId]);
gridDataSource.load();
}
我在這裏創建了一個小樣本 - http://plnkr.co/edit/2BBo6sPGAdNqxeij2ZM0?p=preview;
當然,在你的情況下,你必須在mvc控制器的服務器端實現過濾操作。所以,你應該在那裏傳遞過濾參數。它應該像下面這樣:
var gridDataSource = new DevExpress.data.DataSource({
load: function(options) {
var filter = options.filter,
deferred = $.Deferred();
$.ajax({
url: "your/service/",
data: filter
}).done(function(response){
deferred.resolve(response);
});
return deferred.promise();
}
});
此外,大概這個Add Data-Based Widgets to MVC Project會有所幫助。
謝謝@Sergey。我正在嘗試使樹以虛擬模式工作。首先加載根節點。然後,在展開子節點後,查詢服務後將填充節點。節點/ GetNodes?nodeId =選定節點。我正在使用後續的'$ scope.treeOptions = { dataSource:treeDataSource, virtualModeEnabled:true, dataStructure:'plain', rootValue:-1, };'我使用了您在示例中提供的相同treeDataSource,並嘗試了各種場景,例如添加事件onItemExpanded。請分享你的想法,如果有的話。 – Coding