我在一个视图中配置了3个kendo ui树列表。我正在尝试从其他树的展开事件展开一个树列表。当从当前树视图事件调用expand方法时,它扩展指定的树列表,但阻止当前树列表的扩展。下面是相同的代码块。有人能告诉我哪里出了问题吗:
Html:
<div id="products"></div>
<div id="suppliers"></div>
<div id="categories"></div>
JS:
var data = [{"ProductID": 1,"ProductName": "Chai","ParentID": null,
"UnitPrice": 18,"QuantityPerUnit": "10 boxes x 20 bags",
"UnitsInStock":39,"UnitsOnOrder": },"ProductID":2,"ProductName":"Chang",
"ParentID": null,"UnitPrice": 19,"QuantityPerUnit":
"24 - 12 oz bottles","UnitsInStock": 17,"UnitsOnOrder": 40},
{"ProductID": 3,"ProductName": "Aniseed Syrup","ParentID": null,
"UnitPrice": 10,"QuantityPerUnit": "12 - 550 ml bottles",
"UnitsInStock": 13,"UnitsOnOrder": 70},{"ProductID": 4,
"ProductName": "Chef Anton's Cajun Seasoning","ParentID": 1, "UnitPrice": 22,"QuantityPerUnit": "48 - 6 oz jars","UnitsInStock": 53,
"UnitsOnOrder": 0},{"ProductID": 5,
"ProductName": "Chef Anton's Gumbo Mix","ParentID": 2,
"UnitPrice": 21.35,"QuantityPerUnit": "36 boxes","UnitsInStock": 0,
"UnitsOnOrder": 0},{"ProductID": 6,
"ProductName": "Grandma's Boysenberry Spread","ParentID": 1,
"UnitPrice": 25,"QuantityPerUnit": "12 - 8 oz jars",
"UnitsInStock": 120,"UnitsOnOrder": 0},{"ProductID": 7,
"ProductName": "Uncle Bob's Organic Dried Pears",
"ParentID": 5,"UnitPrice": 30,"QuantityPerUnit": "12 - 1 lb pkgs.",
"UnitsInStock": 15,"UnitsOnOrder": 0},{"ProductID": 8,
"ProductName": "Northwoods Cranberry Sauce","ParentID": 6,
"UnitPrice": 40,"QuantityPerUnit": "12 - 12 oz jars",
"UnitsInStock": 6,"UnitsOnOrder": 0},{"ProductID": 9,
"ProductName": "Mishi Kobe Niku","ParentID": 3,
"UnitPrice": 97,"QuantityPerUnit": "18 - 500 g pkgs.",
"UnitsInStock": 29,"UnitsOnOrder": 0},{"ProductID": 10,
"ProductName": "Ikura","ParentID": 1,"UnitPrice": 31,
"QuantityPerUnit": "12 - 200 ml jars","UnitsInStock": 31,
"UnitsOnOrder": 0}];
var dataSource = new kendo.data.TreeListDataSource({
data: products,
schema: {
model: {
id: "ProductID",
parentId: "ParentID",
fields: {
ProductID: { type: "number", editable: false, nullable: false },
ParentID: { type: "number", nullable: true },
ProductName: { type: "string" },
UnitPrice: { type: "number" },
UnitsInStock: { type: "number" },
UnitsOnOrder: { type: "number" },
QuantityPerUnit: { type: "string" }
}
}
}
});
$(document).ready(function () {
// Create the TreeList
$("#products").kendoTreeList({
// Declare the TreeList columns
columns: [
{ field: "ProductName", title: "Name" },
{ field: "UnitPrice", title: "Price" }
],
// Bind the TreeList to the dataSource
dataSource: dataSource,
height: 500,
scrollable:true
});
$("#suppliers").kendoTreeList({
// Declare the TreeList columns
columns: [
{ field: "QuantityPerUnit", title: "Quantity" },
{ field: "UnitPrice", title: "Unit Price" }
],
// Bind the TreeList to the dataSource
dataSource: dataSource,
height: 500,
scrollable: true
});
$("#categories").kendoTreeList({
// Declare the TreeList columns
columns: [
{ field: "UnitsInStock", title: "In Stock" },
{ field: "UnitsOnOrder", title: "On Order" }
],
// Bind the TreeList to the dataSource
dataSource: dataSource,
height: 500,
scrollable: true
});
var tlProducts = $("#products").data("kendoTreeList");
var tlSuppliers = $("#suppliers").data("kendoTreeList");
tlProducts.bind("expand", expandAll);
function expandAll(e) {
var index = tlProducts.tbody.find("tr[data-uid='" + e.model.uid + "']")[0].rowIndex;
var dataItem = tlSuppliers.expand($("#suppliers tbody>tr:eq(" + index + ")"));
}
});
对于一个棘手的解决方法,请将对suppliers.expand
的调用放在settimeout函数中。在第一个列表视图完成展开之前,其他列表视图无法开始展开。