来自数据源的KendoUI Grid Multi Filter Checkbox

时间:2015-08-10 09:22:49

标签: kendo-ui kendo-grid filtering

我正在使用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用作过滤器字段。

请参阅:http://dojo.telerik.com/ihECE/2

2 个答案:

答案 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,则更容易。