jQuery对话框在kendo项目中无法正确显示

时间:2019-05-19 12:20:48

标签: javascript jquery kendo-ui dialog telerik-mvc

我有一个标准对话框(不是Telerik Kendo对话框),其中包含许多控件,包括Telerik网格。 我使用了带有数据目标和数据切换模式的按钮,并且一切正常。单击按钮显示对话框。一切都很好。

现在,我已经意识到,在页面最初被加载到用户决定单击按钮的时间之间,该网格中的数据不再是最新的。当用户打开对话框时,我需要刷新它。

因此,我将按钮更改为设置点击事件。很好然后在函数中,我试图使用jQuery dialog()打开对话框,但这不起作用。我收到一堆图标错误和未发现的404错误,然后显示为空。

所以我知道,如果我将整个内容迁移到kendo对话框中(我本来应该做的),我可能可以这样解决,或者,如果我包含一堆jquery引用,我可能可以解决也可以这样做(但可能会更改对话框的样式)。

但是,该页面具有选项卡和面板以及根据数据动态创建的模态而非常复杂,因此我不希望立即迁移任何内容。 使用data-target和data-toggle可以正常工作。

所以我的问题是,如何在不重组/迁移任何代码或引用的情况下手动模拟数据切换/数据模式?

有效示例:

<button type="button" id="btnProcessReceipt-10" name="btnProcessReceipt-10" href="#" title="Process Receipt" class="button k-button" style="width:120px" data-toggle="modal" data-target=".process-receipt-many-10">Process Receipt</button>

我现在想做的不起作用的示例:

<button type="button" id="btnProcessReceipt-10" name="btnProcessReceipt-10" href="#" title="Process Receipt" onclick="processReceiptDialog(this)" class="button k-button" style="width:120px">Process Receipt</button>

这是processReceiptDialog函数:

        function processReceiptDialog(e) {
        if (typeof e === "undefined")
            return;

        var idArr = e.id.split('-');
        var idBatch = idArr[idArr.length - 1];

        var grid = $("#active-invoices-" + idBatch).data("kendoGrid");
        grid.dataSource.read();

        $(".process-receipt-many-" + idBatch).dialog();
    }

正如我所说,要使其一开始就工作很麻烦,所以我宁愿不必做太多的工作。只需手动控制显示/隐藏即可。

谢谢! 布鲁斯

1 个答案:

答案 0 :(得分:0)

替换行:

$(".process-receipt-many-" + idBatch).dialog();

与此:

$(".process-receipt-many-" + idBatch).data("kendoGrid").dialog();

如果您使用对话框,则将“ kendoGrid”替换为“ kendoDialog”

摘自Kendo UI Documentation