来自Kendo网格的发布值为null

时间:2014-02-24 16:53:42

标签: c# post kendo-grid

好的,所以我有一个启用了InLine编辑的Kendo网格。

@(Html.Kendo().Grid<DestinationDisplayModel>()
                          .Name("secondaryDestinationGrid")
                          .DataSource(dataSource => dataSource.Ajax().ServerOperation(true)
                                                              .Read(read => read.Action("RefreshDestinationGrid", "BookTrip"))
                                                              .PageSize(20)
                                                              .Model(model =>
                                                                {
                                                                    model.Id(ddm => ddm.DestinationId);
                                                                    model.Field(ddm => ddm.Country);
                                                                    model.Field(ddm => ddm.ShortArrivalDate);
                                                                    model.Field(ddm => ddm.ShortDepartureDate);
                                                                    model.Field(ddm => ddm.TravelDays).Editable(false);
                                                                })
                                                              .Batch(true)
                                                              .Create(create => create.Action("CreateSecondaryDestination", "BookTrip"))
                                                              .Update(update => update.Action("EditingCustom_Update", "Grid"))
                                                              .Destroy(destroy => destroy.Action("EditingCustom_Destroy", "Grid"))

                          )
                          .Columns(columns =>
                              {
                                  columns.Bound(tdm => tdm.Country);
                                  columns.Bound(tdm => tdm.ShortArrivalDate);
                                  columns.Bound(tdm => tdm.ShortDepartureDate).EditorTemplateName("DatePicker");
                                  columns.Bound(tdm => tdm.TravelDays);
                              })
                            .ToolBar(toolBar =>
                            {
                                toolBar.Template("<button class='btn btn-default' onclick='addSecondaryDestinationRow()'><i class='fa fa-plus green'></i> Add a Secondary Destination</button><button class='btn btn-default k-grid-cancel-changes'><i class='fa fa-times green'></i> Cancel Changes</button><button class='btn btn-default k-grid-save-changes'><i class='fa fa-cloud-upload green'></i> Save Changes</button>");
                            })
                          .Pageable(page => page.Enabled(true).PageSizes(new[] {10, 20, 30, 40}))
                          .Editable(editable => editable.Mode(GridEditMode.InLine))
                          .Sortable(sorting => sorting.SortMode(GridSortMode.SingleColumn))
                          .Scrollable()
                          .Selectable(selectable => selectable.Mode(GridSelectionMode.Single))
                          )   

在我的ShortDeparture日期列中,我使用了EditorsTemplate来添加Bootstrap日期选择器。这是我的DatePicker模板的布局

@using Bolt.BusinessLogicLayer.Models
@{
    var datePickerModel = new DatePickerModel();
}

<div class="input-append date" data-date=@datePickerModel.DefaultDate>
   <input id="ShortDepartureDate" name="ShortDepartureDate" class="datepicker" type="text" value=""/>
   <span class="add-on"><i></i></span>
</div>

我收到一个非常奇怪的错误,当我输入DatePicker然后发布到我的控制器时,我的ShortDepartureDate对象的值被设置为我键入的任何内容。

但是,当我选择一个值并发布到我的控制器时,我的ShortDepartureDate的值为空。

我可以看到日期选择器的值是通过使用jquery和日期选择器onclick事件正确设置的。有谁知道为什么会发生这种情况?

更新

剑道支持团队建议我将以下属性添加到我的控件

data-bind="value: ShortDepartureDate"

遗憾的是,这对我不起作用,由于时间限制,我决定放弃内联网格。但也许这会帮助别人。

2 个答案:

答案 0 :(得分:0)

您是否检查过帐值中的日期时间格式是否正确。

您可以通过以下两种方式完成此操作 1.检查网络选项卡中的发布数据,XHR请求 2.确保发布的数据[formcollection]或输入流中的日期时间格式与当前区域性信息日期模式[ShortDateTimePattern]中的日期时间格式相同。

如果日期时间模式不匹配,则在进行模型绑定时,您的日期时间值将设置为null。

另外,请确保在kendo中正确设置了日期时间格式字符串。

您可以在this处查看this引用。

答案 1 :(得分:0)

首先确保你有新的kendo Ui库我有类似的错误,但他们修复了新版本 目前使用
Kendo ui ---&gt; 2013.3.1324

您可以通过两种方式识别问题。

  1. 将值直接打印到单元格中,并检查从编辑器控件打印的值是什么

    columns.Bound(tdm =&gt; tdm.ShortDepartureDate).EditorTemplateName(&#34; DatePicker&#34;) .ClientTemplate(&#34;#= ShortDepartureDate#&#34;);

  2. 制作Javascript函数并在客户端模板中调用

    columns.Bound(tdm =&gt; tdm.ShortDepartureDate).EditorTemplateName(&#34; DatePicker&#34;)  .ClientTemplate(&#34;#= FuncShortDepartureDate(数据)#&#34);

    //数据参数在单元格

    中编辑后由kendo网格默认传递

    function FuncShortDepartureDate(data)
    {
      debugger;
      alert (data.ShortDepartureDate);
    } 
    
    </script>
    
  3. 问候

    shaz