【问题标题】:How to imitate a Kendo grid's popup edition dialog?如何模仿剑道网格的弹出编辑对话框?
【发布时间】:2013-09-16 18:24:37
【问题描述】:

当网格的编辑模式设置为“弹出”时,它会自动生成一个对话框,让用户修改所选行的可编辑字段。

使用网格的“更新”方法,然后将值持久保存在数据库中,如果 PHP 处理程序例程返回新更新的行,网格将神奇地显示目标行的正确修改值,同时保持选中!

我的需要:我必须做同样的事情,但要使用自制的编辑对话框(kendoWindow)。 我不能使用网格自动生成的那个。 (有很多很好的理由......)

关闭后,我的自制编辑对话框会调用一个 AJAX 例程,该例程将数据保存在数据库中并返回新修改的行。

如何使用 PHP 返回的值更新网格的数据源,同时保持选中的目标行?

注意:只有在对 PHP 服务器的“更新”调用返回后才能更新网格的行,因为 PHP 代码中修改了某些值...显示在网格中的值。

【问题讨论】:

    标签: kendo-ui kendo-grid


    【解决方案1】:

    我不确定这是否符合您的需要,但您可以使用editable.template 设置更改弹出编辑器。这可能让您自定义弹出窗口以执行您需要它执行的任何其他操作。


    要选择一行,您需要找到<tr> 元素并将其传递给网格小部件上的.select()。如果你碰巧知道 DataSource 生成的 UID,那么你可以这样做:

    var rowElement = $(gridWidget.element).find('tr[data-uid="' + uid + '"]');
    gridWidget.select(rowElement);
    

    【讨论】:

    • 难道没有一种方法可以根据字段值以编程方式选择一行...这只是关联记录的 id 吗? (它是网格的一部分!)一旦我的更新 PHP 调用返回,我只需重新加载网格并重新选择刚刚修改的同一行!
    • 我知道我们不能使用 de "uid",因为一旦网格被刷新,它就不再一样了。
    • 我在选择行的答案中添加了更多内容。
    • uid 由 DataSource 维护,因此如果您可以使用 DataSource.add(newRecord); 添加新行,则 uid 不会更改。如果您完全重新加载数据,那么是的,它会改变。但是,您可以使用行或单元格模板将您自己的 ID 放在行元素中的某个位置,以便再次找到它。
    • 我只想在第一列放置一个列模板docs.kendoui.com/api/web/grid#configuration-columns.template,使用<span id="${ID}">${data}</span> 之类的内容,然后您可以使用jQuery 进入该行:$("#" + id).closest("tr");
    猜你喜欢
    • 1970-01-01
    • 2013-07-06
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-12
    • 2015-11-28
    • 2015-05-04
    • 1970-01-01
    相关资源
    最近更新 更多