动态限制Kendo Grid MVC日期列中的日期范围

时间:2016-07-08 09:00:40

标签: kendo-ui kendo-grid kendo-asp.net-mvc

我试图在网格中设置日期时间选择器控件的最小值和最大值。需要根据表单上另一个datepicker的值动态设置值。

我曾尝试处理onEdit事件并尝试在已编辑的行中找到日期时间选择器控件,以便在不查看的情况下设置这些值。

什么是在Kendo Grid MVC内联编辑中限制日期范围的正确方法?

这是网格的创建方式:

<div>
    @(Html.Kendo().Grid<CpcPrevisionUnidadesDto>()
          .Name("gridListado")
          .HtmlAttributes(new { @class = "kendo-grid-" })
          .AutoBind(false)
          .Columns(columns =>
          {
              columns.Bound(c => c.IdCpcPrevisionParadasUnidadesDto).Hidden();
              columns.Bound(c => c.IdCpcUnidadesProceso).Hidden();
              columns.Bound(c => c.CodigoUnidadProceso).Title(Html.Resource("CPC_CU_DP003_Unidad").ToString());
              columns.Bound(c => c.DescripcionUnidadProceso).Title(Html.Resource("CPC_CU_DP003_Nombre").ToString());
              columns.Bound(c => c.FechaParada).Title(Html.Resource("CPC_CU_DP003_FechaParada").ToString()).Format("{0:dd/MM/yyyy}").EditorTemplateName("Date"); // Need to set MAX and MIN values
              columns.Bound(c => c.FechaArranque).Title(Html.Resource("CPC_CU_DP003_FechaArranque").ToString()).Format("{0:dd/MM/yyyy}").EditorTemplateName("Date"); // Need to set MAX and MIN values
              columns.Bound(c => c.Observaciones).Title(Html.Resource("CPC_CU_DP003_Observaciones").ToString());
              columns.Template(c => { }).Title(" ").Width(40).ClientTemplate("#=menuRuedaTemplate([uid])#").HtmlAttributes(new { style = "overflow: visible;" });
          })
          .DataSource(datasource => datasource
              .Ajax()
              .PageSize(20)
              .Read(read => read.Action("BuscarPrevisionParadasPrevistasUnidades", "PrevisionParadasPrevistasUnidades").Data("setParametrosListado"))
              .Create(create => create.Action("CreatePrevisionParadasPrevistasUnidades", "PrevisionParadasPrevistasUnidades").Type(HttpVerbs.Post).Data("sendAntiForgery"))
              .Update(update => update.Action("UpdatePrevisionParadasPrevistasUnidades", "PrevisionParadasPrevistasUnidades").Type(HttpVerbs.Post).Data("sendAntiForgery"))
              .Sort(sort => sort.Add("CodigoUnidadProceso").Ascending())
              .Events(e => e.Error("screenErrorHandling"))
              .Model(model => model.Id(p => p.IdCpcPrevisionParadasUnidadesDto))
          )
          .Sortable()
          .Navigatable()
          .Pageable(pager => pager.Messages(messages => messages.Display(Html.Resource("Mensaje_Grid_Datos").ToString()))
          .Messages(m => m.Empty(Html.Resource("Mensaje_Grid_SinDatos").ToString())))
          .Resizable(r => r.Columns(true))
          .Events(e => e.DataBound("dataBoundGrid").Edit("onEdit"))
          .Editable(editable => editable.Mode(GridEditMode.InCell))
          .ToolBar(toolbar => toolbar.Save().SaveText(Html.Resource("MAIN_Guardar").ToString()).CancelText(Html.Resource("MAIN_Cancelar").ToString())))
</div>

这是日期编辑器模板:

@model DateTime?

@(Html.Kendo().DatePickerFor(m => m))

1 个答案:

答案 0 :(得分:1)

您需要编辑DatePicker的HTML并指定Min和Max的值。在此示例中,您只能选择今年的过去值。

@(Html.Kendo().DatePickerFor(m => m)
.Min("01/01/2016")
.Max(DateTime.Now)
)

如果您需要动态设置值,可以试试这个,只需获得所需的值:

$("#Date").data("kendoDatePicker").min(new Date(2015, 0, 1))

.max()

相同

在创建日期选择器时,在“onEdit”事件中尝试使用,并告诉我您是否需要更多帮助