带有下拉菜单模板的Kendo UI网格编辑问题

时间:2014-09-09 23:16:19

标签: kendo-grid edit mvc-editor-templates dropdownlistfor

我有一个带有两个下拉列表列的网格,这些列与剃刀页面中的编辑器模板一起映射。所有单一编辑和更新都正常工作,没有任何问题。但是,当我单击第一行进行编辑并尝试编辑第二行而不更新或取消第一行时,它会自动关闭第一行的编辑模式,第二行可编辑。没关系,但是当我单击第一行而不更新或取消第二行时,第二行的值也会在第一行中更新。

如何解决此问题。顺便说一句,测试人员发现它不是我.. :(

当我们尝试编辑多行但没有更新或取消活动的可编辑行时,所有问题都会出现。

请帮助我,因为我花了很多时间。我在这里附加示例代码..字段名称和模板名称被修改以给出简单的示例。

网格

@(Html.Kendo().Grid(Model.Employees)
              .Name("GridEmployees")
              .Columns(columns =>
              {
                  columns.Bound(i => i.Frequency).Title("Frequency").EditorTemplateName("Frequency").ClientTemplate("#:Frequency#").HtmlAttributes(new { @style = "text-align:Left; " }).Width(75);
                  columns.Bound(i => i.Quarter).Title("Quarter").EditorTemplateName("Quarter").ClientTemplate("#= kendo.toString(Quarter,\"MMM yyyy\") #").HtmlAttributes(new { @style = "text-align:left; " }).Width(75);
                  columns.Bound(i => i.EmpId).Hidden();
                  columns.Command(command => command.Edit()).Width(175);
              })
              .ToolBar(toolbar => toolbar.Create())
              .Editable((editable => editable.Mode(GridEditMode.InLine)))
              .Selectable(selectable => selectable
                  .Mode(GridSelectionMode.Multiple))
              .Sortable(sortable => sortable
                  .AllowUnsort(true)
                  .SortMode(GridSortMode.MultipleColumn))
              .DataSource(dataSource => dataSource
                  .Ajax()
                  .Batch(true)
                  .ServerOperation(false)
                  .Model(model =>
                  {
                      model.Id(s => s.EmpId);
                      model.Field(s => s.Frequency);
                      model.Field(s => s.Quarter);
                  })
                  .Create(update => update.Action("CreateEmployee", "Employee"))
                  .Read(read => read.Action("ReadEmployee", "Employee"))
                  .Update(update => update.Action("UpdateEmployee", "Employee"))
              )
              )

编辑器模板

Quarter.cshtml

@using System.Collections

@(Html.Kendo().DropDownListFor(i => i)
                .Name("Quarter")
                .DataValueField("Id")
                .DataTextField("Name")
                .BindTo((IEnumerable)ViewBag.Quarters)
                .OptionLabel("Select Quarter")
)

Frequency.cshtml

@using System.Collections

@(Html.Kendo().DropDownListFor(i => i)
                .Name("Frequency")
                .DataValueField("Id")
                .DataTextField("Name")
                .BindTo((IEnumerable)ViewBag.Frequencies)
                .OptionLabel("Select Frequency")
)

提前致谢,

1 个答案:

答案 0 :(得分:2)

迟到总比没有好......问题是,你生成了多个具有相同ID的下拉列表。只需为EditorTemplate中的下拉列表分配一个动态ID,您就可以了。

@(Html.Kendo().DropDownListFor(i => i)
            .Name("Frequency")
            .HtmlAttributes(new { @id = "Frequency_#=UniqueId#" }) //eg. row id
            .DataValueField("Id")
            .DataTextField("Name")
            .BindTo((IEnumerable)ViewBag.Frequencies)
            .OptionLabel("Select Frequency")
 )