首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KendoUi网格未命中更新函数

KendoUi网格未命中更新函数
EN

Stack Overflow用户
提问于 2019-02-16 22:01:31
回答 1查看 50关注 0票数 0

我正在使用来自telerik https://demos.telerik.com/aspnet-core/grid/index的kendo ui网格,但我在使用更新函数时遇到了一个问题,它不会触发。我还使用dapper和dapper contrib来帮助我的查询更清晰。

https://dapper-tutorial.net/dapper-contrib

我已经尝试使用上面的教程,创建函数可以工作,但更新函数不起作用。

代码语言:javascript
复制
@(Html.Kendo().Grid<FuelActivityTrackerDal.Models.ActivityHeader>()
   .Name("grid")
   .Columns(columns =>
    {
      columns.Bound(p => p.Description).Filterable(false);
      columns.Bound(p => p.Name);
      columns.Bound(p => p.ActivityDate).Format("{0:MM/dd/yyyy}");
      columns.Bound(p => p.EmployeeName);
      columns.Bound(p => p.Status);
      columns.Command(command => { command.Edit(); command.Destroy(); }).Width(160);
      })
    .ToolBar(toolbar => toolbar.Create())
    .Editable(editable => editable.Mode(GridEditMode.PopUp))
    .Scrollable()
    .HtmlAttributes(new { style = "height:200px" })
    .Pageable()
    .Sortable()
    .Filterable()
    .DataSource(dataSource => dataSource
    .Ajax()
     .Events(events => events.Error("error_handler"))
    .Model(model => model.Id(p => p.ActivityItemId))
    .PageSize(Model.Count())
    .Read(read => read.Action("Activity_Read", "Activity"))
    .Update(update => update.Action("EditingPopup_Update", "Activity").Type(HttpVerbs.Post))
   )
  )

下面是我的模型,如下所示

代码语言:javascript
复制
public class ActivityHeader
{
    public int ActivityCompanyId { get; set; } //(int, null)
    public DateTime ActivityDate { get; set; } //(date, null)
    public string Name { get; set; } //(nvarchar(350), null)
    public DateTime ActivityEndDate { get; set; } //(datetime, null)
    public string Description { get; set; } //(nvarchar(max), null)
    public int ActivityItemId { get; set; } //(int, null)
    public DateTime HoursLeftOnProject { get; set; } //(time(7), null)
    public string Status { get; set; } //(nchar(10), null)
    public int ActivityType { get; set; } //(int, null)
    public DateTime CreatedDate { get; set; } //(date, null)
    public string CreatedBy { get; set; } //(nvarchar(50), null)
    public bool isActive { get; set; } //(bit, null)
    public bool isDeleted { get; set; } //(bit, null)
    public bool isArchived { get; set; } //(bit, null)
    public string SOP { get; set; } //(nvarchar(50), null)
    public int DepartmentId { get; set; } //(int, null)
    public string EmployeeName { get; set; } //(nvarchar(301), null)
}  

这是我的模态方法。

代码语言:javascript
复制
[HttpPost]
public ActionResult EditingPopup_Update([DataSourceRequest] DataSourceRequest request, ActivityHeader activity)
 {
   if (activity != null && ModelState.IsValid)
   {
       UpdateActivity(activity);
   }
return Json(new[] { activity }.ToDataSourceResult(request, ModelState));
}

我的更新活动调用如下所示

代码语言:javascript
复制
public bool UpdateActivity(ActivityHeader activityHeader)
{
        return _activityRepo.UpdateActivityHeader(activityHeader);
 }

在这里,我调用了dapper contrib update函数。

代码语言:javascript
复制
public bool UpdateActivityHeader(ActivityHeader activitys)
{
        bool retval = false;

            using (
              IDbConnection conn = Connection)
            {
                 conn.Open();
                 conn.Update(activitys);
                retval = true;
            }          

}

该方法不会被触发,但也不会产生任何错误。

显示我的项目布局以避免混淆控制器名称

EN

回答 1

Stack Overflow用户

发布于 2019-02-17 03:43:07

我发现是id指向了错误的列,修复后就没问题了。

代码语言:javascript
复制
   @(Html.Kendo().Grid<FuelActivityTrackerDal.Models.ActivityHeader>()
     .Name("grid")
     .Columns(columns =>
        {
          columns.Bound(p => p.Description).Filterable(false);
          columns.Bound(p => p.Name);
          columns.Bound(p => p.ActivityDate).Format("{0:MM/dd/yyyy}");
                                        columns.Bound(p => p.EmployeeName);
                                        columns.Bound(p => p.Status);
                                        columns.Command(command => { command.Edit(); command.Destroy(); }).Width(160);
          })
         .ToolBar(toolbar => toolbar.Create())
         .Editable(editable => editable.Mode(GridEditMode.PopUp))
         .Scrollable()


          .Pageable()
           .Sortable()
           .Filterable() 
           .DataSource(dataSource => dataSource
           .Ajax()
           .Events(events => events.Error("error_handler"))
           .Model(model => model.Id(p => p.ActivityHeaderId))
           .PageSize(Model.Count())
           .Read(read => read.Action("Activity_Read", "Activity"))
           .Update(update => update.Action("EditingPopup_Update", "Activity").Type(HttpVerbs.Post))

              )
            )

我在控制器中用下面的post属性标记了代码

代码语言:javascript
复制
[AcceptVerbs("Post")]
public ActionResult EditingPopup_Update([DataSourceRequest] DataSourceRequest request, ActivityHeader activity)
{
            if (activity != null )
            {
                UpdateActivity(activity);
            }

            return Json(new[] { activity }.ToDataSourceResult(request, ModelState));
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54723859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档