jquery - 在kendo ui网格中添加详细项目

标签 jquery kendo-ui kendo-grid

我正在尝试使用 KendoUi Grid 小部件完成以下任务:

  1. 显示分层网格 - 完成
  2. 添加自定义工具栏按钮,用于将详细信息项添加到特定行 - 完成
  3. 按下自定义按钮后,展开详细信息网格并添加项目。

这一切都在添加项目之前完成(即单击“添加项目”按钮会展开详细信息网格)。但是,如果我尝试在detailExpand函数中添加该项目,则详细信息网格会自动折叠。 我尝试过更改扩展\添加顺序的各种变体,但似乎没有任何效果正常。

<body>
    <div id="example" class="k-content">
        <div id="grid"></div>
    </div>
</body>

$(document).ready(function() {
    $("#grid").kendoGrid({
        dataSource: {
            data: [
                {Name: "first", Items: []},
                {Name: "second", Items: []}
            ],
            schema: {
                model: {
                    fields: {
                        Name: { type: "string" }
                    }
                }
            },
            pageSize: 20
        },
        height: 430,
        scrollable: true,
        sortable: true,
        filterable: true,
        pageable: {
            input: true,
            numeric: false
        },
        detailInit: detailInit,
        detailExpand: detailExpand,
        columns: [

            { field: "Name", title: "Name", width: "130px" },
            { command: [
                {name: "edit"}, 
                {name: "destroy"},
                { text: "Add item", click: addItem }], 
             title: "&nbsp;", width: "172px" }
        ],
        editable: "inline",
        toolbar: ["create"]
    });
});
var addItemNow = false;
function addItem(e) {
    var row = $(e.currentTarget).closest("tr");

    addItemNow = true;  
    var grid = $("#grid").data("kendoGrid");
    grid.expandRow(row);
};

function detailInit(e) {
    $("<div id='detailGrid'/>").appendTo(e.detailCell).kendoGrid({
        dataSource: {
            data: e.data.Items,
            schema: {
                model: {
                    fields: {
                        Description: { type: "string" }
                    }
                }
            }
        },
        columns: [
            { field: "Description", title: "Description", width: "70px" },
            { command: [
                {name: "edit"}, 
                {name: "destroy"}
            ]}                               
        ]});
}

function detailExpand(e) {
    var grid = e.detailRow.find("#detailGrid").data("kendoGrid");
    if(addItemNow)
    {
        addItemNow = false;
        grid.dataSource.add({Description: ""});


    }
}

这是一个 jfiddle 显示此 jfiddle

最佳答案

请看一下这个JSBin查看如何添加嵌套网格子行。 “添加新行”按钮保留在子网格上,而不是主行上。

只要我知道您是否在主行上进行更改或执行任何操作,所有详细信息都会自动折叠。

关于jquery - 在kendo ui网格中添加详细项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23430894/

相关文章:

angular - Angular 2 的最佳第三方 UI 控件

javascript - Kendo treeview expandPath 方法

javascript - kendo Ui - 网格不调用 Controller

javascript - jQuery 的 .not() 返回值如何影响 .hide()?

javascript - 在 IE 和 Firefox 中使用嵌套在按钮内的 ng-mousedown 调用 Angular Controller 函数

javascript - 我需要将网站重定向到 21.45 到 10.00 之后的页面

javascript - 丢失过滤器菜单中的文本框值

javascript - 这有什么问题吗?尝试在我将光标悬停时播放声音,但仅在单击时才有效?

reactjs - Kendo UI react Treeview 向每个节点添加操作按钮

c# - 如何在 grid kendo mvc 中创建 saveChanges 回调函数