我有一个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()但之后无法访问过滤器。
编辑 解决方案:我有一个解决方法,可以再次使用过滤器。在打开弹出窗口之前,我只是假装点击它们。它并不漂亮,但到目前为止它还能为我服务。
但是似乎所有东西都被这个该死的弹出窗口踢了/杀了。我甚至无法访问网格的数据源......这很奇怪......
答案 0 :(得分:0)
我正在处理相同的问题,但是数据不存在就很好地通过了。从弹出窗口的onClose中检出或使用onDataBound并使用e.sender获取与.data(“ KendoGrid”)相对的Grid对象的句柄,这对我来说就是固定的。尽管弹出窗口关闭后,我仍在尝试使我的过滤器正常工作。