我正在使用KendoUI网格,我想在我的网格中添加复选框过滤器。我遇到的问题是我希望过滤器从我的数据源中显示一个特定的字段,但实际上是在id字段上过滤。
我的代码是:
var ds = [{country: "BG", id: 1},{country: "GRM", id: 2}, {country: "USA", id: 3}];
$("#grid").kendoGrid({
columns: [ {
field: "id",
template: "${ SetDisplayText(id)}",
filterable: {
multi:true,
dataSource: ds
}
} ],
filterable: true,
dataSource: ds
});
function SetDisplayText(matchId) {
var matchSite = $.grep(ds, function(item) {
return item.id === matchId;
});
if (matchSite.length > 0) {
return matchSite[0].country;
} else {
return "";
}
}
如您所见,我希望在过滤器中显示国家/地区的名称,但实际上将其ID用作过滤器字段。
答案 0 :(得分:1)
我能想出的最佳解决方案是在过滤器中使用模板。 E.g。
multi: true,
dataSource: ds,
itemTemplate: function (e) {
return "<span><label><span class='multiFilter'>#= data.DisplayField || data.all #</span><input type='checkbox' name='" +e.field + "' value='#= data.ValueField == 0 ? null : data.ValueField #'/></label></span>";
}
希望这有助于其他人。
答案 1 :(得分:0)
我认为你可能会错误地攻击这个问题,但我不确定你是否只是过分简化了你的真正问题。
如果每个国家/地区的ID都是唯一的,则只需在您的网格中包含国家/地区而不是ID。如果在用户过滤了数据集后需要ID,则可以使用this之类的内容访问它们。如果serverPaging为false,则更容易。