Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 剑道网格与下拉,迭代网格设置下拉值_Jquery_Asp.net Mvc_Asp.net Mvc 3_Kendo Ui_Kendo Grid - Fatal编程技术网

Jquery 剑道网格与下拉,迭代网格设置下拉值

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

我正在使用ASP.NETMVC3、Jquery和剑道UI

以下是我的网格设置的剪辑,我删除了所有不相关的字段:

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;