做项目的过程中,大多页面都是会用到时间或者日期这个字段的,但是如果直接新增的话,可以倒是可以新增,但是一查询数据,就会发现并不是按我们新增的那个方式给回填回来的,多多少少都会有一些出入,就是在数据库里面录入数据都没办法直接把日期时间录入进去。
所以只能在控制器写代码的时候就把时间日期给转换成想要的类型,好比如字符串的类型,这样就可以直观地看得到新增的时候是什么,那么查看数据回填的时候也就是会按你写好的转换来回填什么。
首先在要给日期的输入框里面绑定可选的日期,在这里用layui插件的日期也可以,用其他的方法绑定日期插件都是可以的。比如用layui插件的日期的话,就得加载laydate这个模块了,而用另一种方法的话,就是直接在input标签里面,把那个type的样式设置成date就可以了,出来的效果直接就是这样的:
代码呢就是:
<input type="date" class="form-control" id="CustomerForShort" name="CustomerForShort" />
这应该就是自带的日期插件
然后到控制器那边查询的话,就是初始化数据的时候,建立了实体类之后就在实体类里面写上这样的一个方法,这个方法就是把日期给转化成它特定的形式,然后就在浏览器看到我们想要的模式。
/// <summary>
/// 到厂时间
/// </summary>
public string ArriveFactoryTime1;
public string ArriveFactoryTime2
{
get
{
try
{
ArriveFactoryTime2 = Convert.ToDateTime(ArriveFactoryTime1).ToString("yyyy-MM-dd HH:mm:ss");
return ArriveFactoryTime1;
}
catch (Exception)
{
return ArriveFactoryTime1;
throw;
}
}
set
{
ArriveFactoryTime1 = value;
}
}
比如制定一个年月日时分秒的模式,那就在括号里面写上yyyy-MM-dd HH:mm:ss就成了。
这个就是显示的效果。到厂时间就变成了你想要的格式了。
不过要想显示这个效果的话,在控制器上初始化数据的时候还要改一下查询的日期,要不然也是不行的。就是初始化查询的时候,把那个日期的代码由 :
ArriveFactoryTime = tbEntrustOrder.ArriveFactoryTime//到厂时间,
改成:
ArriveFactoryTime2 = tbEntrustOrder.ArriveFactoryTime.ToString(),
这样。但是把这里改了也还是不可以。
在页面上也要改,在页面上改的话,就改一下在实体类里面写的到厂时间:ArriveFactoryTime2这个,就是把这个给写上,在页面field的值这个,然后浏览器才接收,才会显示出你想要给用户显示的样子。
这个就是
把上面的带有黄色标记的名称,改成你在实体类里面写上的那个就可以了。
而想要修改回填的时候也要显示这种格式,也还得改一下控制器查询回填的代码,就是把前面多条件查询的代码全部复制到回填查询表的方法那里,把ToList()改成Single(),只能回填一条数据,然后分组改一下,这样也差不多了。
还需要回到页面,把时间的获取给回填,不然就是空数据。
回填之后:
获取回填:
//回填日期
$("#ArriveFactoryTime").val(jsonData.ArriveFactoryTime2);
记住,在控制器写的ArriveFactoryTime2,然后回填就用这个。