jqgrid表单发布到Web服务日期时间更改格式

时间:2013-10-03 07:13:24

标签: datetime twitter-bootstrap jqgrid asmx datetimepicker

我不确定这是与jqgrid有关还是webservice / postback / JSON问题,但我会尝试提供尽可能多的信息。

我发布了带有DateTime字段的jqgrid的模态弹出窗口。

当它从浏览器回发时,它会提交以下数据(如Firebug中所示):

InStock Yes
Name    Desktop Computer
Note    note
Ship    4
ShipDate    05-11-2013
id  1
oper    edit



[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string UpdateOrder(DateTime ShipDate, string Name, Stock InStock,Ship Ship, string Note,int id)
{
    return "";
}

jqgrid的colModel看起来像..

colModel:[
    {name:'Id',index:'Id', width:60, sorttype:"int", editable: false},
    {name:'ShipDate',index:'ShipDate',width:90, editable:true, sorttype:"date",unformat: pickDate},
    {name:'Name',index:'Name', width:150,editable: true,editoptions:{size:"20",maxlength:"30"}},
    {name:'InStock',index:'InStock', width:70, editable: true,edittype:"checkbox",editoptions: {value:"Yes:No"},unformat: aceSwitch},
    {name:'Ship',index:'Ship', width:90, editable: true,edittype:"select",editoptions:{value:"4:FedEx;1:InTime;2:TNT;3:ARAMEX"}},
    {name:'Note',index:'Note', width:150, sortable:false,editable: true,edittype:"textarea", editoptions:{rows:"2",cols:"10"}} 
], 

并且pickDate看起来像

function pickDate( cellvalue, options, cell ) {
    setTimeout(function(){
        $(cell) .find('input[type=text]')
                .datepicker({format:'dd-mm-yyyy' , autoclose:true}); 
    }, 0);
}

编辑表单样式如下(编辑表单显示时)

function style_edit_form(form) {
    //enable datepicker on "sdate" field and switches for "stock" field
    form.find('input[name=ShipDate]').datepicker({format:'dd-mm-yyyy' , autoclose:true})
        .end().find('input[name=stock]')
                .addClass('ace ace-switch ace-switch-5').wrap('<label class="inline" />').after('<span class="lbl"></span>');

但是,当在服务器(asmx服务)收到数据时,datetime(ShipDate)将更改为“11/05/2013 00:00:00”,而从客户端发送的shipdate为05-11 -2013(这是正确的)。知道发生了什么吗?

1 个答案:

答案 0 :(得分:1)

对于datepicker,您使用' dd-mm-yyyy '格式,但在服务器端根据安装的文化转换为不同的格式,即' mm / dd / yyyy hh:mm: ss '随着时间的推移。 如果您需要与从jquery传递的格式相同的格式,则需要以指定格式解析服务器端的日期。

DateTime time = Convert.ToDateTime("11/05/2013 00:00:00"); 
Console.WriteLine(time); //Default format 
string format = "d/M/yyyy";    // Use this format
Console.WriteLine(time.ToString(format));