Asp.net mvc 4 如何在没有数据更新的情况下强制剑道网格更新

Asp.net mvc 4 如何在没有数据更新的情况下强制剑道网格更新,asp.net-mvc-4,kendo-ui,kendo-grid,Asp.net Mvc 4,Kendo Ui,Kendo Grid,我正在尝试在剑道网格(内联编辑)中上载产品的图像。在insert中,它工作得很好。在更新中,它不允许我只更改图像。单击“更新”按钮后,它不会进入控制器,除非我更改其他字段之一 因此,如果有一种方法可以强制更新按钮转到控制器,这将非常有用 @(Html.Kendo().Grid(Model) .Name("BrandGrid") .Events(e => e.Edit("edit").DataBound("onDataBound").Cance

我正在尝试在剑道网格(内联编辑)中上载产品的图像。在insert中,它工作得很好。在更新中,它不允许我只更改图像。单击“更新”按钮后,它不会进入控制器,除非我更改其他字段之一

因此,如果有一种方法可以强制更新按钮转到控制器,这将非常有用

@(Html.Kendo().Grid(Model)
    .Name("BrandGrid")
                    .Events(e => e.Edit("edit").DataBound("onDataBound").Cancel("onDataBound")) 
            .DataSource(dataSource => dataSource

                .Ajax()
                .ServerOperation(true)
                .Events(events => events.Error("error_handler"))


                .PageSize(10)
                   .Model(  model =>{
                       model.Id(p => p.BrandID);
                       model.Field(p => p.BrandID).Editable(false);


                   })

                   .Update(update => update.Action("Brand_Update", "Brands"))
                   .Create(insert => insert.Action("Brand_Insert", "Brands"))
                   .Read(read => read.Action("Brand_Read", "Brands"))
                   .Destroy(delete => delete.Action("Brand_Delete", "Brands"))

            )
         .Columns(columns =>
         {
             columns.Bound(p => p.BrandID).Groupable(false).Title(MyResources.LabelBrandID).HeaderHtmlAttributes(new { style = "text-align:" + MyResources.HeaderDirection });
             columns.Bound(p => p.BrandNameE).Title(MyResources.LabelBrandNameE).HeaderHtmlAttributes(new { style = "text-align:" + MyResources.HeaderDirection });
             columns.Bound(p => p.BrandNameA).Title(MyResources.LabelBrandNameA).HeaderHtmlAttributes(new { style = "text-align:" + MyResources.HeaderDirection });
             columns.Bound(p => p.BrandID).Width(120).Title(" ").Filterable(false)
            .ClientTemplate(@"<img alt='Brand Image' src='" + Url.Content("~/Images/Brands/") + "#=data.BrandID#.jpg' alt=\"${data.BrandID}\" />");

             columns.Template(@<text></text>).Title(" ").ClientTemplate("<input type=file name='files' onchange='dataBound(this.value)' />").Width(280).Hidden(true);                 
             columns.Command(command => { command.Edit().Text(MyResources.EditText).CancelText(MyResources.CancelText).UpdateText(MyResources.UpdateText); command.Destroy().Text(MyResources.Delete); });



         })

                             .ToolBar(toolbar => toolbar.Create().Text(MyResources.AddNewItem))
                     .Pageable(pager => pager
                    .Numeric(true)
                        .PreviousNext(true)
                        .Refresh(true)
                        .PageSizes(true)
                  )



                             .Filterable(filterable => filterable
                                .Extra(true)
                                .Operators(operators => operators
                                   .ForString(str => str.Clear()
                                   .StartsWith(MyResources.StartsWith)
                                   .IsEqualTo(MyResources.IsEqualTo)
                                   .IsNotEqualTo(MyResources.IsNotEqualTo)
                                   .Contains(MyResources.Contains)
                                   .DoesNotContain(MyResources.DoesNotContain)
                                   .EndsWith(MyResources.EndsWith)
                                    )
                                   .ForNumber(num => num.IsEqualTo(MyResources.IsEqualTo).IsGreaterThan(MyResources.IsGreaterThan).IsNotEqualTo(MyResources.IsNotEqualTo).IsGreaterThanOrEqualTo(MyResources.IsGreaterThanOrEqualto).IsLessThanOrEqualTo(MyResources.IsLessThanOrEqualTo).IsLessThan(MyResources.IsLessThan))
                                   )

                              .Messages(messages => messages.Info(MyResources.Info).Filter(MyResources.Filter).Clear(MyResources.Clear).And(MyResources.And).Or(MyResources.Or))
                                  )

                           .Pageable(pager => pager.Messages(messages => messages.Display(MyResources.Display).Empty(MyResources.Empty).First(MyResources.GoToTheFirstPage).Last(MyResources.GoToTheLastPage).Next(MyResources.GoToTheNextPage).Previous(MyResources.GoToThePreviousPage).Of(MyResources.of).Page(MyResources.page).ItemsPerPage(MyResources.ItemsPerPage).Refresh(MyResources.Refresh)))


                .Selectable(selectable => selectable
                .Mode(GridSelectionMode.Multiple))
                .Navigatable()
                .Sortable()
                .Scrollable(scr => scr.Height(405))
                .Resizable(resize => resize.Columns(true))
                //.HtmlAttributes(new { style = "height:430px;" })
                                        .Editable(editablee => editablee.Mode(GridEditMode.InLine).DisplayDeleteConfirmation(MyResources.DeleteConfirmMessage))

                )
@(Html.Kendo().Grid(模型)
.名称(“BrandGrid”)
.Events(e=>e.Edit(“Edit”).DataBound(“onDataBound”).Cancel(“onDataBound”))
.DataSource(DataSource=>DataSource
.Ajax()
.ServerOperation(真)
.Events(Events=>Events.Error(“错误处理程序”))
.页面大小(10)
.Model(Model=>{
model.Id(p=>p.BrandID);
model.Field(p=>p.BrandID).可编辑(false);
})
.Update(Update=>Update.Action(“品牌更新”、“品牌”))
.Create(insert=>insert.Action(“品牌插入”、“品牌”))
.Read(Read=>Read.Action(“Brand_Read”,“Brands”))
.Destroy(delete=>delete.Action(“Brand_delete”,“Brands”))
)
.列(列=>
{
columns.Bound(p=>p.BrandID).Groupable(false).Title(MyResources.LabelBrandID).headerHTML属性(新的{style=“text align:”+MyResources.HeaderDirection});
columns.Bound(p=>p.BrandNameE).Title(MyResources.LabelBrandNameE).HeaderHtmlAttributes(新的{style=“text align:”+MyResources.HeaderDirection});
columns.Bound(p=>p.BrandNameA).Title(MyResources.LabelBrandNameA).HeaderHtmlAttributes(新的{style=“text align:”+MyResources.HeaderDirection});
columns.Bound(p=>p.BrandID).Width(120).Title(“”).Filterable(false)
.ClientTemplate(@“”);
columns.Template(@).Title(“”).ClientTemplate(“”).Width(280).Hidden(true);
columns.Command(Command=>{Command.Edit().Text(MyResources.EditText).CancelText(MyResources.CancelText).UpdateText(MyResources.UpdateText);Command.Destroy().Text(MyResources.Delete);});
})
.ToolBar(ToolBar=>ToolBar.Create().Text(MyResources.AddNewItem))
.Pageable(寻呼机=>寻呼机
.数字(真)
.PreviousNext(真)
.刷新(真)
.页面大小(真)
)
.Filterable(Filterable=>Filterable
.额外(真实)
.Operators(Operators=>Operators
.ForString(str=>str.Clear()
.StartsWith(MyResources.StartsWith)
.IsEqualTo(MyResources.IsEqualTo)
.IsNotEqualTo(MyResources.IsNotEqualTo)
.Contains(MyResources.Contains)
.DoesNotContain(MyResources.DoesNotContain)
.EndsWith(MyResources.EndsWith)
)
.ForNumber(num=>num.IsEqualTo(MyResources.IsEqualTo)。IsGreaterThan(MyResources.IsGreaterThan)。IsNotEqualTo(MyResources.IsNotEqualTo)。IsGreaterThanOrEqualTo(MyResources.IsGreaterThanOrEqualTo)。IsLessThanOrEqualTo(MyResources.IsLessThanOrEqualTo)。IsLessThan(MyResources.IsLessThanOrEqualTo))
)
.Messages(Messages=>Messages.Info(MyResources.Info).Filter(MyResources.Filter).Clear(MyResources.Clear).And(MyResources.And).Or(MyResources.Or))
)
.Pageable(pager=>pager.Messages(Messages=>Messages.Display(MyResources.Display).Empty(MyResources.GoToTheFirstPage).First(MyResources.GoToTheFirstPage).Last(MyResources.GoToTheLastPage).Next(MyResources.gotothetenextpage).previouspage(MyResources.Of).Page(MyResources.Page).ItemsPerPage(MyResources.ItemsPerPage).刷新(MyResources.Refresh)))
.可选(可选=>可选
.Mode(GridSelectionMode.Multiple)
.Navigatable()
.Sortable()
.可滚动(scr=>scr.高度(405))
.resize可调整大小(resize=>resize.Columns(true))
//.HtmlAttributes(新的{style=“height:430px;”})
.Editable(Editable=>Editable.Mode(GridEditMode.InLine).DisplayDeleteConfirmation(MyResources.DeleteConfirmMessage))
)

Kendo UI仅在记录
脏时更新记录,这意味着模型中的某些字段已被修改

如果您不更改模型,而是直接更改数组中的数据,则KendoUI不知道记录实际上已被修改(这就是为什么我们必须使用
set
,以控制
dirty
是否需要切换到
true

我不确定你是如何改变图像的,我同意@PeturSubev的观点,如果你分享你的代码,可能会更容易,因为我们可以看到哪里出了问题

如果不可能,您可以通过执行以下操作强制数据项变脏:

// item is the reference to the data in the Grid DataSource
data.dirty = true;
$("#grid").data("kendoGrid").saveChanges();

这里的示例:

共享一些代码,这样我们就可以看到您在做什么,听起来模型似乎是因为某种原因没有更改的。