Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何自动调整剑道树列表列onExpand&;崩溃?_Javascript_Kendo Ui_Kendo Grid_Kendo Treelist - Fatal编程技术网

Javascript 如何自动调整剑道树列表列onExpand&;崩溃?

Javascript 如何自动调整剑道树列表列onExpand&;崩溃?,javascript,kendo-ui,kendo-grid,kendo-treelist,Javascript,Kendo Ui,Kendo Grid,Kendo Treelist,我有一个剑道剑士。折叠事件绑定到onCollapse()方法,展开事件绑定到onExpand()方法 换句话说:第一列由级别组成。默认级别为0,展开为默认级别,并显示级别1的所有行(其所有子级)。展开级别1行时,将显示其子行(级别2)。同时,该列必须稍微拉伸(以显示下一个级别编号)。展开另一个级别1行时,该列不需要拉伸,但展开级别2的行时,第一列必须再次拉伸以显示级别3,依此类推 因此,我使用treeList.autoFitColumn(0)。每当我展开同一级别的行时(这不是我所期望的,因为展开

我有一个剑道剑士。折叠事件绑定到
onCollapse()
方法,展开事件绑定到
onExpand()
方法

换句话说:第一列由级别组成。默认级别为0,展开为默认级别,并显示级别1的所有行(其所有子级)。展开级别1行时,将显示其子行(级别2)。同时,该列必须稍微拉伸(以显示下一个级别编号)。展开另一个级别1行时,该列不需要拉伸,但展开级别2的行时,第一列必须再次拉伸以显示级别3,依此类推

因此,我使用
treeList.autoFitColumn(0)
。每当我展开同一级别的行时(这不是我所期望的,因为展开同一级别意味着列在第一次展开后确实增长了,但在第二次展开后没有增长),这会导致每秒展开后自动拟合


另一种方法是手动更改宽度,但我找不到类似于
treeList.columns[0].setWidth(x)
的内容,因为在内容宽度实际更改之前触发了
折叠
扩展
事件,所以您看到的行为正在发生

要避免这种情况,您可以“延迟”自动拟合,直到当前代码运行完毕。您可以使用超时为0的
setTimeout
来完成此操作。这会将函数的执行置于执行队列末尾的
setTimeout

请参见演示的代码片段


剑道UI片段
$(“#树状图”).Kendotrelist({
可调整大小:正确,
栏目:[
{字段:“名称”},
{字段:“文本”}
],
数据源:[
{id:1,Name:“Name 1”,Text:“Sample Text 1”,parentId:null},
{id:2,Name:“Name 2”,Text:“Sample Text 2”,parentId:null},
{id:3,Name:“Name 3”,Text:“Sample Text 3”,parentId:1},
{id:4,名称:“非常长的名称4”,文本:“示例文本4”,父id:2}
],
扩展:函数(e){
setTimeout(()=>treeList.autoFitColumn(0),0);
},
折叠:函数(e){
setTimeout(()=>treeList.autoFitColumn(0),0);
}
});
var treeList=$(“#treeList”).数据(“kendoTreeList”);
树列表自动调整列(0);

您看到的行为之所以发生,是因为
折叠
扩展
事件在内容宽度实际更改之前触发

要避免这种情况,您可以“延迟”自动拟合,直到当前代码运行完毕。您可以使用超时为0的
setTimeout
来完成此操作。这会将函数的执行置于执行队列末尾的
setTimeout

请参见演示的代码片段


剑道UI片段
$(“#树状图”).Kendotrelist({
可调整大小:正确,
栏目:[
{字段:“名称”},
{字段:“文本”}
],
数据源:[
{id:1,Name:“Name 1”,Text:“Sample Text 1”,parentId:null},
{id:2,Name:“Name 2”,Text:“Sample Text 2”,parentId:null},
{id:3,Name:“Name 3”,Text:“Sample Text 3”,parentId:1},
{id:4,名称:“非常长的名称4”,文本:“示例文本4”,父id:2}
],
扩展:函数(e){
setTimeout(()=>treeList.autoFitColumn(0),0);
},
折叠:函数(e){
setTimeout(()=>treeList.autoFitColumn(0),0);
}
});
var treeList=$(“#treeList”).数据(“kendoTreeList”);
树列表自动调整列(0);