Jquery 剑道网格与下拉,迭代网格设置下拉值
我正在使用ASP.NETMVC3、Jquery和剑道UI 以下是我的网格设置的剪辑,我删除了所有不相关的字段:Jquery 剑道网格与下拉,迭代网格设置下拉值,jquery,asp.net-mvc,asp.net-mvc-3,kendo-ui,kendo-grid,Jquery,Asp.net Mvc,Asp.net Mvc 3,Kendo Ui,Kendo Grid,我正在使用ASP.NETMVC3、Jquery和剑道UI 以下是我的网格设置的剪辑,我删除了所有不相关的字段: Html.Kendo() .Grid<MyProject.Models.Domain.Students>() .Name("Students") .Sortable(settings => settings.Enabled(false)) .Filterable(settings => settings.Enabled(false
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();
我在页面上有另一个下拉列表,它不在网格上。我有一个jquery函数,每次下拉列表更改时都会执行该函数。下拉列表是教师列表。当它改变时,我想将网格中每一行的teacher列设置为下拉列表中选择的相同值和文本对
这里是我到目前为止所做的,您可以看到注释的位置,我需要放置一些代码。我不知道如何做到这一点:
function teachers_change()
{
var teacherDL = $("#allTeach").data("kendoDropDownList");
teachid = teacherDL.value();
teachName = teacherDL.text();
$("#Students tr").each(function ()
{
var tr = this;
var cells = tr.cells;
//RIGHT HERE IS WHERE I WANT TO GET A REFERENCE TO THE DROP DOWN
//AND SET THE VALUE TO teachid AND THE TEXT TO teachName
});
}
这应该自动完成,如果生成的DropDownList的名称被称为您的属性,那么它们应该通过数据绑定属性进行绑定
在您的情况下,DropDownList名称应该是teacher。Rest应该自动完成,网格使用的整个dataItem应该替换为DropDownList的dataItem。在这方面花了很多时间后,它可能并不漂亮,但它完成了任务 如果有人有更好的解决方案,请发布
grid.dataSource._data[this.rowIndex].teacher.teacherId = teachid ;
grid.dataSource._data[this.rowIndex].teacher.teacherName = teachName;
grid.dataSource._data[this.rowIndex].dirty = true;
TDIndex = (this.rowIndex * 17) +3;
grid.table[0].cells[TDIndex].innerHTML = '<span class="k-dirty"></span>' + teachName;
grid._data[this.rowIndex].teacher.teacherId = teachid;
grid._data[this.rowIndex].teacher.teacherName = teachName;
前两行和后两行直接修改下拉列表使用的数据源。中间的行设置了实际的网格字段,所以当下落未打开时,您可以看到网格中的选定值。彼得,不确定我理解您的答案。您有设置下拉列表的代码行吗?记住teacherDL不在网格上。我这样做的原因是,如果需要,用户可以通过一种简单的方法为所有学生指定一名教师。
grid.dataSource._data[this.rowIndex].teacher.teacherId = teachid ;
grid.dataSource._data[this.rowIndex].teacher.teacherName = teachName;
grid.dataSource._data[this.rowIndex].dirty = true;
TDIndex = (this.rowIndex * 17) +3;
grid.table[0].cells[TDIndex].innerHTML = '<span class="k-dirty"></span>' + teachName;
grid._data[this.rowIndex].teacher.teacherId = teachid;
grid._data[this.rowIndex].teacher.teacherName = teachName;