Я использую ASP.NET MVC 3 с пользовательским интерфейсом Kendo и JQuery.Ссылка на раскрывающийся список Kendo UI (ASP.NET MVC) на сетке
Это похоже на предыдущий вопрос, который я задал, но не то же самое.
У меня есть сетка пользовательского интерфейса Kendo, на этой сетке есть выпадающее меню. Таким образом, каждая строка имеет раскрывающийся список. Я хочу выполнить итерацию по каждой строке сетки и установить все значения в указанное значение. В раскрывающемся списке Kendo есть методы, которые позволят мне получить и установить значения выпадающего списка, но у меня возникла проблема с получением ссылки на раскрывающийся список, поэтому я могу использовать эти методы get и set (в контексте сетки).
Вот что моя сетка выглядит следующим образом:
Html.Kendo()
.Grid<MyProject.Models.Domain.Students>()
.Name("Students")
.Sortable(settings => settings.Enabled(false))
.Filterable(settings => settings.Enabled(false))
.Resizable(resizing => resizing.Columns(true))
.Scrollable(settings => settings.Enabled(true))
.HtmlAttributes(new { style = "font-size: 85%;" })
.Columns(columns =>
{
columns.Bound(o => o.StudentId).Title("StudentId").Hidden();
columns.Bound(o => o.Name).Title("Student Name").Width(200);
columns.Bound(o => o.teacher).Title("Teacher")
.ClientTemplate("#=data.teacher ? teacher.teacherName : ''#")
.Width(150)
.Filterable(false);
})
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Model(model =>
{
model.Id(c => c.StudentId);
model.Field(c => c.teacher);
})
.Events(events => events.Error("Field_onError"))
.Read(read => read.Action("_AjaxGetFields", "Student"))
.Update("_AjaxUpdateFields", "Student")
.Destroy("_AjaxDelFields", "Student"))
.Events(events =>
events
.DataBound("Fields_onDataBound")
.Change("onFieldSelect")
.Edit("onFieldEdit")
)
.ToolBar(commands =>
{
commands.Save().HtmlAttributes(new { id = "saveField" });
})
.Scrollable(scrollable => scrollable.Height("375px"))
.Selectable()
.Editable(editing =>
editing.Mode(Kendo.Mvc.UI.GridEditMode.InCell)
).Render();
Вот шаблон для выпадающих колонок:
@(Html.Kendo().DropDownList()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(string.Empty))
.DataValueField("TeacherId")
.DataTextField("TeacherName")
.DataSource(source =>
{
source.Read(read =>
{
read
.Action("_SelectTeacherList","Teacher")
.Data("onTeacherDataBinding");
})
.ServerFiltering(true);
})
.Events(e => e
.Change("dropdownlist_change")
)
)
А вот где я перебирать строки сетка в сценарии jquery:
$("#fieldDef tr:has(td)").each(function()
{
//HERE IS WHERE I WANT TO REFERENCE THE DROP DOWN FOR THE CURRENT GRID ROW
// I WANT TO SET EACH DROPDOWN TO A SPECIFIED VALUE HERE
}
Так как я могу получить ссылку на это падение в сетке? Как только я получу ссылку, я могу использовать все методы Kendo для ее настройки. Документация Kendo показывает нам, как получить ссылку на раскрывающийся список, но не тогда, когда она находится в сетке.
Если два или более выпадающие? Есть ли способ подачи вторичного фильтра? – DoomerDGR8
Yep: var ddl = e.container.find ("[data-role = dropdownlist]"). Eq (2) .data ("kendoDropDownList"); –