Javascript 如何以编程方式设置Kendo UI网格列宽

Javascript 如何以编程方式设置Kendo UI网格列宽,javascript,kendo-ui,kendo-grid,Javascript,Kendo Ui,Kendo Grid,我想以编程方式设置剑道UI网格列宽。我正在使用以下代码: function setColumnWidths(grid, options) { for (var i = 0; i < options.columns.length; i++) { grid.columns[i].width = options.columns[i].width; } } function setColumnWidths(网格、选项){ 对于(var i=0;i

我想以编程方式设置剑道UI网格列宽。我正在使用以下代码:

function setColumnWidths(grid, options) {
    for (var i = 0; i < options.columns.length; i++) {
        grid.columns[i].width = options.columns[i].width;
    }
}
function setColumnWidths(网格、选项){
对于(var i=0;i
执行语句后在chrome中调试时,grid.columns[i].width似乎被适当地设置为新值,但是GUI中没有任何更改,列宽保持不变。
我遗漏了什么?

您需要通过网格元素而不是定义来更改网格的宽度。剑道网格包含标题和内容,所以您需要更改两个元素

请改用此代码

$("#grid-id .k-grid-header-wrap").find("colgroup col").eq(xx).width(yy);
$("#grid-id .k-grid-content").find("colgroup col").eq(xx).width(yy);

我以这个结束。Dion的解决方案给了我关于使用colgroups的初步想法,但是该解决方案仅限于没有锁定列,不同colgroups中的列是什么

另请注意:我不想使用grid.setOptions,因为它的限制会破坏附加的事件和标题(在使用ASP MVC帮助程序渲染网格的情况下)

function setColumnWidths(网格、选项){
var lockedCount=0;
对于(var i=0;i
谢谢。我想我们应该有一个网格API和对象模型,而不是操纵html。。。提醒:记住跳过隐藏列,因为它们没有
col
标记。如果您试图将其应用于所有列,那么用于查找列的JQuery可能不再正确。我只是做了一些类似的事情,我的结果是:$(“#grid.k-grid-header.k-grid-header-wrap”)。查找…如何使用此函数@回声风暴
function setColumnWidths(grid, options) {
    var lockedCount = 0;
    for (var i = 0; i < options.columns.length; i++) {
        if (options.columns[i].hasOwnProperty('locked')) {
            if (options.columns[i].locked) {
                lockedCount++;
            }
        }
    }

    for (var i = 0; i < options.columns.length; i++) {
        var width = options.columns[i].width;
        grid.columns[i].width = width;
        if (options.columns[i].hasOwnProperty('locked') && options.columns[i].locked) {
            $("#grid .k-grid-header-locked").find("colgroup col").eq(i).width(width);
            $("#grid .k-grid-content-locked").find("colgroup col").eq(i).width(width);

        } else {
            $("#grid .k-grid-header-wrap").find("colgroup col").eq(i-lockedCount).width(width);
            $("#grid .k-grid-content").find("colgroup col").eq(i - lockedCount).width(width);
        }
    }
    // Hack to refresh grid visual state
    grid.reorderColumn(1, grid.columns[0]);
    grid.reorderColumn(1, grid.columns[0]);
}