以前打开弹出窗口时,Kendo UI网格过滤器不起作用

时间:2014-11-24 13:49:46

标签: javascript kendo-ui popup kendo-grid

我有一个Kendo UI网格,其中可以过滤一些列。对于该列中的每一行,您可以打开弹出窗口以查看特定条目的某些详细信息。

我可以毫无问题地打开弹出窗口。但是:在关闭它并尝试过滤任何列之后,我收到以下错误: JavaScript运行时错误:无法获取未定义或空引用的属性“切换”

如果我在打开弹出窗口之前过滤了一个列,它就像一个魅力。 如果我过滤列然后打开弹出窗口,则可以再次过滤已过滤的列,但不会过滤其他列。

我不知道为什么在打开和关闭弹出窗口后我无法过滤列。

任何想法或提示都会非常有用。谢谢

HTML:

<div id="windoofTestOuter"><div id="windoofTest"></div></div>      
<div id="processGrid"></div>

我的网格:

    $("#processGrid").kendoGrid({
        sortable: true,
        pageable: true,
        selectable: true,
        filterable: {
            extra: false
        },
        dataSource: {
            type: "aspnetmvc-ajax",
            transport: {
                read: {
                    url: "/Home/GetProcesses",
                    cache: false,
                    type: "POST",
                    dataType: "json"
                },
                parameterMap: function (data) {
                    return $.extend({}, data, { sort: data.sort, filter: data.filter });
                }
            },
            serverPaging: true,
            serverFiltering: true,
            serverSorting: true,
            page: "@ViewBag.ProcessPage",
            schema: { data: "Data", total: "Total", model: { id: "Id" } },
            pageSize: "@(@Model.MaxCountToShow)"
        },
        columns: [
            { field: "ErrorDateTime", title: "ProcessDateTime", width: "170px"/*, filterable: { ui: dateFilter }*/ },
            { field: "Name", title: "Processtype", attributes: { value: "type" }, width: "240px;", filterable: { ui: processtypeFilter} },
            { field: "Service", title: "Service", width: "181px;", filterable: { ui: serviceFilter } },
            { field: "Operation", title: "Operation", width: "130px", filterable: { ui: operationFilter } }
        ]
    }).data("kendoGrid");

将打开弹出窗口的链接/字符串:

 function createProcessActionString(process) {
            var det = '<a class="makeANiceMouse" onclick="processDetailUrl(' + process.Id + ', ' + grid.dataSource.page() + ')">Details</a>';                
            return det;                
 } 

我的弹出窗口:

function processDetailUrl(id, page) {
    var windoof = $("#windoofTest").kendoWindow({
              width: "1150px",
              height: "300px",
              content: det,
              title: "Process Details",
              actions: ["Minimize", "Maximize", "Close"],
              close: function (e) {
                     windoof.data("kendoWindow").content(" ");
              }
    });

    windoof.data("kendoWindow").center().open();
}

我删除了不必要的列等等。

编辑:我尝试对 filterMenuInit 中的过滤器进行初始化。打开和关闭弹出窗口后,我单击其中一列的过滤器图标,我收到错误: JavaScript运行时错误:无法获取未定义或空引用的属性“切换”。和以前一样。

编辑:我使用了 windoof.destroy()但之后无法访问过滤器。

编辑 解决方案:我有一个解决方法,可以再次使用过滤器。在打开弹出窗口之前,我只是假装点击它们。它并不漂亮,但到目前为止它还能为我服务。

但是似乎所有东西都被这个该死的弹出窗口踢了/杀了。我甚至无法访问网格的数据源......这很奇怪......

1 个答案:

答案 0 :(得分:0)

我正在处理相同的问题,但是数据不存在就很好地通过了。从弹出窗口的onClose中检出或使用onDataBound并使用e.sender获取与.data(“ KendoGrid”)相对的Grid对象的句柄,这对我来说就是固定的。尽管弹出窗口关闭后,我仍在尝试使我的过滤器正常工作。