好的,所以我有一个启用了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"
遗憾的是,这对我不起作用,由于时间限制,我决定放弃内联网格。但也许这会帮助别人。
答案 0 :(得分:0)
您是否检查过帐值中的日期时间格式是否正确。
您可以通过以下两种方式完成此操作 1.检查网络选项卡中的发布数据,XHR请求 2.确保发布的数据[formcollection]或输入流中的日期时间格式与当前区域性信息日期模式[ShortDateTimePattern]中的日期时间格式相同。
如果日期时间模式不匹配,则在进行模型绑定时,您的日期时间值将设置为null。
另外,请确保在kendo中正确设置了日期时间格式字符串。
答案 1 :(得分:0)
首先确保你有新的kendo Ui库我有类似的错误,但他们修复了新版本
目前使用
Kendo ui ---&gt; 2013.3.1324
您可以通过两种方式识别问题。
将值直接打印到单元格中,并检查从编辑器控件打印的值是什么
columns.Bound(tdm =&gt; tdm.ShortDepartureDate).EditorTemplateName(&#34; DatePicker&#34;) .ClientTemplate(&#34;#= ShortDepartureDate#&#34;);
制作Javascript函数并在客户端模板中调用
columns.Bound(tdm =&gt; tdm.ShortDepartureDate).EditorTemplateName(&#34; DatePicker&#34;) .ClientTemplate(&#34;#= FuncShortDepartureDate(数据)#&#34);
//数据参数在单元格
中编辑后由kendo网格默认传递
function FuncShortDepartureDate(data)
{
debugger;
alert (data.ShortDepartureDate);
}
</script>
问候