【问题标题】:Why KENDO Grid in Inline Editing mode Doesn't pass the new User?为什么内联编辑模式下的 KENDO Grid 不传递新用户?
【发布时间】:2018-12-27 22:13:36
【问题描述】:

我在“剑道”网格下方处于内联编辑模式,它会执行 CRUD 但我刚刚编写了编辑。 但是当我在[HttpPost] 函数上设置断点时,ExternalUser 类的所有属性都为 Null。

  @(Html.Kendo().Grid<DBLayer.ViewModels.User.ExternalUser>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(c => c.Username);
        columns.Bound(c => c.Name);
        columns.Bound(c => c.Surname);
        columns.Command(command => command.Edit()).Width(150);
        columns.Command(command => command.Destroy()).Width(150);
    })
      .ToolBar(toolBar =>
      {
          toolBar.Template(@<text><a class="btn btn-primary" href="@Url.Action("Insert","User")" >create</a></text>);
      })
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:550px;" })
.DataSource(dataSource => dataSource
    .Ajax()
    .Batch(true)
    .ServerOperation(false)
    .Events(events => events.Error("error_handler"))
    .Model(model =>
    {
        model.Id(p => p.ProfileId);
    })
    .PageSize(20)
    .Read(read => read.Action("Users_Read", "User"))
    .Update(update => update.Action("Update", "User"))
    .Destroy(destroy => destroy.Action("EditingCustom_Destroy", "User"))
)

)

这是我的行动:

    public ActionResult Insert()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Insert([DataSourceRequest] DataSourceRequest request,ExternalUser user)
    {
    }

抱歉,大量代码被转储,它们只是相关的,我相信错误出在某个地方。

【问题讨论】:

  • 尝试像这样更改参数:public ActionResult Insert([DataSourceRequest] DataSourceRequest request, int ProfileId),只是传递ProfileId 工作正常吗?如果 int 参数有效,那么在网格中定义的模型类应该作为动作参数弄得一团糟。我还想查看ExternalUser 中的属性。
  • 我更改了更新功能:public ActionResult Update([DataSourceRequest] DataSourceRequest request, Guid ProfileId) { var user = Facade.UserBO.GetUserById(ProfileId); return Json(new[] { user }.ToDataSourceResult(request, ModelState)); },现在我有错误:Failed to load resource: the server responded with a status of 500 (Internal Server Error)
  • HTTP 500 表示 Update 操作中未处理的异常。在哪一行抛出异常?此外,您仍然没有显示 ExternalUser viewmodel 属性,这可能会导致问题。
  • ` public class ExternalUser { public Guid ProfileId { set;得到; } 公共字符串名称 { 设置;得到; } 公共字符串姓氏 { 设置;得到; } 公共字符串用户名 { 设置;得到; } 公共字符串 OrganizationId { 设置;得到; } 公共字符串 PersonnelNumber { 设置;得到; } 公共字符串 StatusId { 设置;得到; } 公共 int ProfileHead { 设置;得到; } 公共字符串用户名 { 设置;得到; } 公共字符串 fname { 设置;得到; } 公共字符串 lname { 设置;得到; } }`
  • 当我点击更新按钮时出现异常,但它不起作用,我按 F12 并复制错误

标签: asp.net-mvc kendo-grid


【解决方案1】:

将此绑定添加到数据源:

.Create(create => create.Action("Insert", "User"))

您还必须将 k-grid-save-changes 类添加到您的工具栏按钮。更改以下工具栏按钮:

toolBar.Template(@<text><a class="btn btn-primary k-grid-save-changes" href="javascript:;">create</a></text>);

结果:

 @(Html.Kendo().Grid<DBLayer.ViewModels.User.ExternalUser>()
.Name("grid")
.Columns(columns =>
{
    columns.Bound(c => c.Username);
    columns.Bound(c => c.Name);
    columns.Bound(c => c.Surname);
    columns.Command(command => command.Edit()).Width(150);
    columns.Command(command => command.Destroy()).Width(150);
})
  .ToolBar(toolBar =>
  {
      toolBar.Template(@<text><a class="btn btn-primary k-grid-save-changes" href="javascript:;">create</a></text>);
  })
.Pageable()
.Sortable()
.Scrollable()
.HtmlAttributes(new { style = "height:550px;" })
.DataSource(dataSource => dataSource
.Ajax()
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
    model.Id(p => p.ProfileId);
})
.PageSize(20)
.Read(read => read.Action("Users_Read", "User"))
.Create(create => create.Action("Insert", "User"))
.Update(update => update.Action("Update", "User"))
.Destroy(destroy => destroy.Action("EditingCustom_Destroy", "User"))
)

【讨论】:

    猜你喜欢
    • 2020-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多