【问题标题】:Kendo grid with a custom popup editor带有自定义弹出编辑器的剑道网格
【发布时间】:2016-02-04 00:03:11
【问题描述】:

我以为我一切正常,但当我点击更新按钮时意识到,来自自定义编辑器的值没有传递给控制器​​。这是选择网格行中的原始值。

我的网格定义如下并正确加载数据。

@(Html.Kendo().Grid<ET.Data.Models.TowTicketModel>()
            .Name("gridTicketStatus")
            .DataSource(dataSource => dataSource
                .Ajax()
                .Model(model => {
                    model.Id(p => p.TicketId);
                    model.Field(p => p.TicketId).Editable(false);
                    model.Field(c => c.CreatedDateTime).Editable(false);
                    model.Field(c => c.AssignedTo).Editable(false);
                    model.Field(c => c.TicketType).Editable(false);
                    model.Field(c => c.Customer.Name).Editable(false);
                    model.Field(c => c.Description).Editable(false);
                    //  model.Field("TicketStatus", typeof(TowTicketStatusModel));
                })
                .Read(read => read.Action("GetTowTickets", "TowDriver"))
                .Update(up => up.Action("UpdateTowDriverTickets", "TowDriver"))

            )
            .Columns(columns =>
            {
                columns.Bound(ticket => ticket.TicketId).Title("Id");
                columns.Bound(ticket => ticket.CreatedDateTime).Title("Date").Width("120px").Format("{0:MM/dd/yyyy}")
                         .HeaderHtmlAttributes(new
                         {
                             //style = "white-space: nowrap; text-overflow: ellipis;"
                             @class = "k-grid td"
                         });
                columns.Bound(ticket => ticket.Customer.Name)
                         .HeaderHtmlAttributes(new
                         {
                             //style = "white-space: nowrap; text-overflow: ellipis;"
                             @class = "k-grid td"
                         });

                columns.Bound(p => p.TicketType)
                .ClientTemplate("#: data.TicketType ? data.TicketType.DisplayValue : '' #")

                .Title("Type")
                .HeaderHtmlAttributes(new
                {
                    //style = "white-space: nowrap; text-overflow: ellipis;"
                    @class = "k-grid td"
                });



                columns.Bound(p => p.TicketStatus)
                .ClientTemplate("#: data.TicketStatus ? data.TicketStatus.DisplayValue : '' #")
                .Title("Status")
                         .HeaderHtmlAttributes(new
                         {
                             //style = "white-space: nowrap; text-overflow: ellipis;"
                             @class = "k-grid td"
                         });

                columns.Bound(ticket => ticket.Description).HeaderHtmlAttributes(new
                {
                    //style = "white-space: nowrap; text-overflow: ellipis;"
                    @class = "k-grid td"
                })
                .HtmlAttributes(new { title = "#= Description #" });

                columns.Bound(p => p.AssignedTo)
                .ClientTemplate("#: data.AssignedTo ? data.AssignedTo.FullName : '' #")

                .Title("AssignedTo")
                         .HeaderHtmlAttributes(new
                         {
                             //style = "white-space: nowrap; text-overflow: ellipis;"
                             @class = "k-grid td"
                         });


                columns.Bound(ticket => ticket.CreatedBy.FullName).Title("CreatedBy").HeaderHtmlAttributes(new
                {
                    //style = "white-space: nowrap; text-overflow: ellipis;"
                    @class = "k-grid td"
                });

                columns.Command(cmd => cmd.Edit());
                //columns.Bound(ticket => ticket.AssignedTo.FullName).Title("AssignedTo");


                // columns.Bound(ticket => product.UnitsInStock);
            })
            .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("TowTicketDriverEditor"))
            // .ToolBar(tb => tb.Save)
            .Pageable()
            .Sortable()
        )

我的编辑器包含以下内容。

> @model ET.Data.Models.TowTicketModel
> 
> 
> @Html.HiddenFor(model => model.TicketId)
> 
> <div class="container">
>     <div class="row">
>                
>         <div>
>             @Html.LabelFor(model => model.TicketId)
>         </div>
> 
>         <div>
>             @Html.LabelFor(model => model.Customer.Name)
> 
>             @Html.EditorFor(model => model.Customer.Name, new { htmlAttributes = new { disabled = "disabled", @readonly = "readonly" }
> })
>         </div>
>         <div>
>             @(Html.Kendo().DropDownListFor(m => m)
>             .Name("TicketStatus") 
>                                         
>             .DataValueField("TicketId") 
>             .DataTextField("DisplayValue")
>             .Value("StatusId")                               // .Value(Model.StatusId)
>             .DataSource(source =>
>             {
>                 source.Read("GetTowTicketStatuses", "TowDriver")
>                 .ServerFiltering();
>             }))
>         </div>    
>         
>     </div> </div>

最后是我的控制器:

public async Task<ActionResult> UpdateTowDriverTickets([DataSourceRequest] DataSourceRequest request, 
TowTicketModel updated)
            {
                if (updated != null && ModelState.IsValid)
                {
                    await _towProvider.UpdateTowTicketAsync(new UpdateTowTicketRequest(updated));
                }

                return Json(ModelState.ToDataSourceResult());

            }

再次加载我的网格,我单击编辑按钮,弹出窗口打开,下拉列表从 ajax 调用正确填充。

但是,我从下拉列表中选择并单击更新,UpdateTowDriverTickets 的模型参数没有从编辑器下拉列表中选择的值。

我确实定义了一个 GridForeignKey.cshtml 模板。 (只是从示例中复制了一个模板。)

我们将不胜感激。

【问题讨论】:

  • TicketID 是数据库中的自增字段吗?
  • 是的,但我所做的只是更新。所以在我的场景中,我点击了行中的编辑命令按钮,弹出窗口正在加载。当它到达弹出窗口时,我已经获得了模型数据。单击更新按钮时,仅下拉列表选择的更改不会使其进入控制器中的更新方法。

标签: kendo-ui kendo-grid mvc-editor-templates


【解决方案1】:

原来我们在 DataValueField 中有错误的值。 TicketId 是网格的 ID,但不是我们的下拉列表的 ID。更正了这一点,一切似乎都在工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多