将kendo ui网格中的列默认值设置为DateTime.Now

时间:2017-07-04 08:55:21

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

我希望在我的visual studio程序中创建一个网格,将DateTime.now显示为默认值,但它不起作用。

Kendo网格中的列:

columns.Bound(c => c.CurrentDate).EditorTemplateName("Date").Format("{0:dd/MM/yy}");

我的模型中的声明:

public DateTime CurrentDate { get; set; }

当我加载网页时,列中文本框的值设置为当前日期,但不显示值。

我的Kendo UI网格代码:

  

@(Html.Kendo()。网格()

                    .Name("EIDGrid")

                    .Columns(
                        columns =>
                        {

                            columns.Bound(c => c.Breed);
                            columns.Bound(c => c.Gender);
                            columns.Bound(c => c.AnimalId);
                            columns.Bound(c => c.EIDDate).EditorTemplateName("Date").ClientTemplate(DateTime.Now.ToString("dd/MM/yy"));//.ClientTemplate(DateTime.Now.ToString()).Format("{0:dd/MM/yy}").EditorTemplateName("Date");//.EditorTemplateName("Date")
                            columns.Bound(c => c.EIDNum);
                            columns.Bound(c => c.BatchNum);
                        }
                )

                .Scrollable(s => s.Height("350px"))
                .Editable(editable => editable.Mode(GridEditMode.InCell).DisplayDeleteConfirmation(false))
                .Pageable()
                .DataSource(datasource => datasource

                    .Ajax()

                    .Model(model =>
                    {
                        model.Id(p => p.SireGuid);
                        //model.Field(p => p.SireGuid).DefaultValue(Guid.Empty);
                        //model.Id(p => p.EIDDate);
                        //model.Field(p => p.EIDDate).Editable(true);

                    })

                    .PageSize(100)
                    .Batch(true)
                    .Sort(s => s.Add("Name"))
                ) )

我的型号代码:

  

使用System;使用System.Collections.Generic;运用   System.Globalization;使用System.Linq;使用System.Web;

     

命名空间Kendo_UI_Bootstrap_Integration.Models {

public class EID
{

    public string Breed { get; set; }
    public string Gender { get; set; }
    public string AnimalId { get; set; }
    public int EIDNum { get; set; }
    public int BatchNum { get; set; }

    public DateTime EIDDate { get; set; }




    public int ClusterIndex
    {
        get; set;
    }
    public System.Guid SireGuid { get; set; }
} }

我的控制器代码:

  

使用System;使用System.Collections.Generic;使用System.Linq;   使用System.Web;使用System.Web.Mvc;

     

命名空间Kendo_UI_Bootstrap_Integration.Controllers {       public class EidController:Controller       {           // GET:开斋节           public ActionResult EidView()           {               return View();           }       }}

1 个答案:

答案 0 :(得分:0)

尝试这样的事情:
型号:

public class Eid
{
    public string Breed { get; set; }    
    public DateTime EIDDate { get; set; } = DateTime.Now;
    public string SireGuid { get; set; }
}

MVC包装器:

@(Html.Kendo().Grid<KendoUIApp3.Models.Eid>()
    .Name("EIDGrid")
    .Columns(columns =>
    {
        columns.Bound(c => c.Breed);            
        columns.Bound(c => c.EIDDate).Format("{0:dd/MM/yy}");            
    })
    .Scrollable(s => s.Height("350px"))
    .Editable(editable => editable.Mode(GridEditMode.InCell).DisplayDeleteConfirmation(false))
    .Pageable()
    .Groupable()
    .Sortable()
    .DataSource(dataSource => dataSource
        .Ajax()
        .Model(model =>
        {
            model.Id(p => p.SireGuid);
        })
        .Read(read => read.Action("EIDRead", "Home"))
        .PageSize(100)
        .Batch(true)
        .Sort(s => s.Add("Breed"))
    ))

<强>控制器:

public ActionResult EIDRead([DataSourceRequest] DataSourceRequest request)
    {
        var collection = new List<Eid>()
        {
           new Eid
           {
               Breed = "test",
               SireGuid = Guid.NewGuid().ToString()
           }
        };

        return Json(collection.ToDataSourceResult(request));           
    }

您必须定义网格由数据填充的方式。在这种情况下,我使用.Read函数来查询行的控制器方法EIDRead。当然,您可以将数据直接传递给网格,但这种方法更易于维护。