我试图对过滤器中的一个复杂物体的中间过滤器进行过滤 两个属性{Id:0,名称:"选择MID" }
现在,当我在过滤器输入中键入一些值时,我会使用这个例子
VM1033:3未捕获的TypeError:(d.Mid ||"")。toLowerCase不是函数
我认为这是因为Mid是一个对象,而不是一个预防类型
任何想法?
谢谢你
这是我的网格:
$("#grid_1").kendoGrid({
dataSource: {
dataType: "d",
transport: {
read: {
url: crudServiceBaseUrl + "/Read",
},
update: {
url: crudServiceBaseUrl + "/Update",
type: "post",
contentType: "application/json; charset=utf-8",
complete: function (e) {
jQuery("#load_balancer_grid").data("kendoGrid").dataSource.read();
}
},
create: {
url: crudServiceBaseUrl + "/Create",
type: "post",
contentType: "application/json; charset=utf-8",
complete: function (e) {
jQuery("#load_balancer_grid").data("kendoGrid").dataSource.read();
}
},
destroy: {
url: crudServiceBaseUrl + "/Delete",
dataType: "d"
},
parameterMap: function (options, operation) {
}
},
batch: true,
pageSize: 100,
schema: {
model: {
id: "MidGroupId",
fields: {
MidGroupId: { validation: { required: true }, editable: true, type: "number" },
Mid: { validation: { required: true }, editable: true, defaultValue: { Id: 0, Name: "Select MID" } },
RouteSales: {
type: "boolean",
parse: function (value) {
if (value != null) {
return value || false;
}
return value;
},
nullable: true
},
RouteRebills: { type: "boolean" },
QueueRebills: { type: "boolean" },
// ResetCounters: { type: "boolean" },
}
}
}
},
sortable: true,
batch: true,
groupable: true,
pageable: {
refresh: true,
pageSizes: true,
buttonCount: 5
},
filterable: {
mode: "row"
},
toolbar: kendo.template($("#template").html()),
edit: function(e) {
if (e.model.isNew() == false) {
$(e.container.find("input[name=MidGroupId]")).attr('disabled', 'disabled');
$(e.container.find("input[name=Mid]")).attr('disabled', 'disabled');
$(e.container.find("input[name=CardType]")).attr('disabled', 'disabled');
}
},
columns: [
{
field: "MidGroupId", type: "number"
},
{
field: "Mid", editor: MidDropDownEditor, template: "#=Mid.Name#", title: "MID",
filterable: {
cell: {
dataSource: {
type: "d",
transport: {
read: crudServiceBaseUrl + "/GetMidsOptions"
}
}
,
dataValueField: "Id",
dataTextField: "Name"
}
}
}
],
editable: true
});
我试图过滤一个物体
答案 0 :(得分:0)
每dataSource API,dataSource上没有dataType属性,因此下面部分不正确,因此这可能是您的错误原因:
dataSource: {
dataType: "d",
dataType可以在dataSource传输的传输CRUD中更深入地定义,就像你已经拥有它一样。我没有尝试将复杂的对象放到网格列,为什么不在服务器上执行?在服务器上创建一个原始属性并在网格中轻松使用它是最自然的。
答案 1 :(得分:0)
我也遇到了这个问题。解决方案是在更改处理程序触发时更新编辑器中的 model.dirtyFilds。它看起来像:
function MidDropDownEditor(container, options){
$(`<input id="MidEditor" name="Mid" data-bind="value:Mid" />`)
.appendTo(container)
.kendoDropDownList({
autoBind: false,
filter: "startswith",
dataTextField: "Name",
dataValueField: "Id",
enable: false,
change: function(){
if (options.model.dirtyFields['Mid']) {
options.model.dirtyFields['Mid.Name'] = true;
}
}
});
在列设置中,您应该设置属性“字段”,例如“Mid.Name”。
它对我有用。