Model for the Tag property is of complex type object
[UIHint("TaskTagEditor")]
public List<NameId> TaskTags { get; set; }
// Class ----
public class NameId
{
public int Id { get; set; }
public string Name { get; set; }
}
Kendo grid field:
columns.Bound(p => p.TaskTags).Width(240).ClientTemplate("#=taskTagsTemplate(TaskTags)#").EditorTemplateName("TaskTagEditor").Title("Tasks") .Filterable(p => p.Multi(true) .CheckAll(false) .ItemTemplate("TaskTagsFilterItemTemplate") .DataSource(d => { d.Read(read => read.Action("GetTaskTagsEditor", "TaskManager")); }) );
Client Template and Item template js:
function taskTagsTemplate(data) {
var template = "";
for (var i = 0; i < data.length; i++) {
template += (data.length == 1 || i == 0) ? data[i].Name : ("," + data[i].Name);
}
return template;
}
function TaskTagsFilterItemTemplate(e) {
return "<span><label><input class='tag-filter-input' type='checkbox' name='" + e.field + "' value='#= Id #'/><span>#= Name #</span></label></span><br/>"
}
Editor :
GetTaskTagsEditor
@model List<GrapeTree.Core.Model.TaskManager.NameId>
@(Html.Kendo().MultiSelectFor(m => m)
.DataTextField("Name")
.DataValueField("Id")
.AutoBind(false)
.TagMode(MultiSelectTagMode.Multiple)
.DataSource(d =>
{
d.Read(read => read.Action("GetTaskTagsEditor", "TaskManager"));
})
)
Controller method for option:
public ActionResult GetTaskTagsEditor() {
var tagList = _taskManager.GetActiveTaskTags()
.Select(tag => new NameId
{
Id = tag.Id,
Name = tag.Name
}).OrderBy(x => x.Name);
var jsonSerializerSettings = new JsonSerializerSettings { ContractResolver = new DefaultContractResolver() };
var json = JsonConvert.SerializeObject(tagList.ToList(), Formatting.Indented, jsonSerializerSettings);
return Content(json, "application/json");
}
Incell Editor is working fine and Filter about to bind with muti select value but filtering doesn't work for this complex object