我想在我的 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().Grid<Kendo_UI_Bootstrap_Integration.Models.EID>()
.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"))
) )
我的模型代码:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
namespace 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; }
}
}
我的 Controller 代码:
using System;
using System.Collections.Generic;
using System.Linq; using System.Web;
using System.Web.Mvc;
namespace Kendo_UI_Bootstrap_Integration.Controllers {
public class EidController : Controller
{
// GET: Eid
public ActionResult EidView ()
{
return View();
}
}
}
最佳答案
尝试这样的事情:
型号:
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"))
))
Controller :
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 函数来查询 Controller 方法 EIDRead 以获取行。当然你可以直接将数据传递给网格,但这种方法更易于维护。
关于c# - 将 kendo ui 网格中的列默认值设置为 DateTime.Now,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44901426/