Jquery 免费使用jQGrid dateformatter并重用网格中的完整数据
在免费jQgrid中,我遇到了日期格式化列和日期选择器作为编辑器的问题 我用一些日期格式的列定义了一个网格,数据中有Java日期对象Jquery 免费使用jQGrid dateformatter并重用网格中的完整数据,jquery,datepicker,jqgrid,date-formatting,free-jqgrid,Jquery,Datepicker,Jqgrid,Date Formatting,Free Jqgrid,在免费jQgrid中,我遇到了日期格式化列和日期选择器作为编辑器的问题 我用一些日期格式的列定义了一个网格,数据中有Java日期对象 colModel:[ {name:"reminderFrom", label:"Reminder", formatter:"date", formatoptions:{srcformat:'ISO8601Long', newformat:'d.m.Y'}, editoptions:{size:20, dataI
colModel:[
{name:"reminderFrom", label:"Reminder",
formatter:"date",
formatoptions:{srcformat:'ISO8601Long', newformat:'d.m.Y'},
editoptions:{size:20, dataInit:function(el)
{$(el).datepicker({dateFormat:'dd.mm.yy'});},
defaultValue: function($this) { return this.value; }},},
....
],
当我读取整个网格数据时
var fulldata = g.jqGrid('getRowData');
manipulate it (not the datestrings!) and then want to reuse it in the grid
g.jqGrid('setGridParam', {datatype: 'local', data: fulldata });
g.trigger("reloadGrid");
g.jqGrid('setGridParam', { datatype: "json"});
日期将更改。如何使用dateformatter重新格式化日期字符串以便在网格中重用?@Oleg 我知道JSFIDLE,但我无法构建示例 下面是一些伪代码-该应用程序基于struts并与ajax和json一起工作 Java-服务器端:
class MyDataBO {
private String myKey;
private java.util.Date myDate;
//...setter/getter
}
class MyGridAction {
List< MyDataBO> gridDataList;
public String prepareList(){
//fill the list with MyDataBO
return SHOW; //struts based
}
public List< MyDataBO> getGridDataList() {
return gridDataList;
}
}
类MyDataBO{
私有字符串myKey;
private java.util.Date myDate;
//…二传手/接球手
}
类MyGridAction{
ListgridDataList;
公共字符串预处理列表(){
//用MyDataBO填充列表
return SHOW;//基于struts
}
公共列表getGridDataList(){
返回gridDataList;
}
}
JSP-客户端
<table id="grid"></table>
<script type="text/javascript">
jQuery(document).ready(function() {
jQuery("#grid").jqGrid({
datatype: "json",
mtype: "POST",
url: "MyGridAction.getGridDataList",
jsonReader: {root: "gridDataList"},
colModel:[
{name:"myKey", label:"key", key:true},
{name:"myDate", label:"date", formatter:"date", formatoptions:{srcformat:'ISO8601Long', newformat:'d.m.Y'}
]
});
</script>
jQuery(文档).ready(函数(){
jQuery(“网格”).jqGrid({
数据类型:“json”,
mtype:“POST”,
url:“MyGridAction.getGridDataList”,
jsonReader:{root:“gridDataList”},
colModel:[
{名称:“myKey”,标签:“key”,key:true},
{名称:“myDate”,标签:“date”,格式化程序:“date”,格式化选项:{srcformat:'ISO8601Long',newformat:'d.m.Y'}
]
});
问题就发生在这里
<script type="text/javascript">
var g = jQuery("#grid");
var fulldata = g.jqGrid('getRowData');
// do some work on the array
g.jqGrid('setGridParam', {datatype: 'local', data: fulldata });
g.trigger("reloadGrid");
g.jqGrid('setGridParam', { datatype: "json"});
</script>
var g=jQuery(“网格”);
var fulldata=g.jqGrid('getRowData');
//在阵列上做一些工作
g、 jqGrid('setGridParam',{datatype:'local',data:fulldata});
g、 触发器(“重新加载网格”);
g、 jqGrid('setGridParam',{datatype:'json});
重新加载网格后,日期会更改…您的结果是什么?它会根据日期字符串每次更改。例如,2017年9月1日变为2015年8月28日,然后(再次执行)2010年8月27日…问题似乎是src='ISO8601Long'的DateFormatter-我认为它应该是'd.m.Y'仅用于重新加载。请始终包括您使用的jqGrid版本(或免费jqGrid)。此外,您还写了“Java日期对象”不包括从服务器返回的任何测试数据。您可以在Chrome/IE开发者工具的网络选项卡中看到从服务器返回的JSON/XML数据(按F12键启动)。此外,重要的是要了解,
newformat
中的日期格式必须是PHP日期格式,而jQuery UI的dateFormat
取决于您使用的jQuery UI版本(“dd.mm.yy”
用于新的jQuery UI,或“dd.mm.yyyy”
用于旧版本)。您使用哪个jQuery UI?这里的问题可能是您使用getRowData方法获取数据。请在获取数据后检查数组的日期格式,即在变量fulldata
中。创建网格版本时,日期字段的格式可能与初始字段的格式不同:jQuery.UI 1.12.1 jQuery 3.1.1 jqgrid 4。13.7问题是,我从getRowData获取数组中显示的datestring,并在setRowData中使用它。但是该列需要“ISO8601Long”作为输入。因此,我需要一个解决方案来将“d.m.Y”-字符串重新格式化为“ISO8601Long”,或者告诉该列它应该使用“d.m.Y”作为输入,或者告诉网格ist应该给我一个“ISO8601Long”我也尝试了millis(在一个隐藏列中),并用JavaScript.Date.toISOString()尝试了它,但没有成功。我选择了另一种方法-分离所有行,将它们放入数组中,操纵它(对象中的顺序和一些标志),然后再次附加它们。