2016-07-08 100 views
0

我试图设置日期时间选择器控件在网格内的最小值和最大值。该值需要根据表单上另一个datepicker的值动态设置。在Kendo Grid MVC日期列中动态限制日期范围

我曾尝试处理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)) 
+0

显示您的HTML请为。你是如何创建DatePicker的? –

+0

@MarioGarcia感谢您的时间,我更新了我的问题。 – Oscar

+0

你还可以显示DatePicker模板“Date”吗? –

回答

1

您需要编辑HTML为您的DatePicker并指定值,最小值和最大值。在这个例子中,你只能从今年选择过去的值。

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

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

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

同为.max()

尝试,关于你的“onEdit”事件,当日期选择器被创建,并让我知道如果你需要更多的帮助

+0

感谢您的帮助。但是,我需要根据页面中的另一个控件设置最大值和最小值,所以它需要在客户端的js中完成。 – Oscar

+0

我们可以启动聊天室进一步讨论吗?我不知道创建一个 –

+0

@Me都不是:-( – Oscar