0

更新行イベントが発生したときにサーバーに送信される日付データ形式が正しくありません。送信されたすべてのデータに対して「01.01.0001 00:00:00」としてサーバーに送信されます。送信前のクライアントの行日付データは(アラートで見た)「Sat May 05 2012 00:00:00 GMT+0300 (GTB Daylight Time)」です。何かアドバイス?

ここに画像の説明を入力

クライアント側のコードは次のとおりです。

var gridSource = {
            datatype: "json",
            datafields: [{ name: 'KargoId' }, { name: 'Ad' }, { name: 'Soyad' },
            { name: 'YuklenmeTarihi', type: 'date' }, { name: 'Adet' }, { name: 'Fiyat'}],
            url: 'BindGrid',
            updaterow: function (rowid, rowdata) {                    

                if (selectedUrunId != undefined && selectedUrunId != -1) {
                    rowdata.UrunId = selectedUrunId;
                    selectedUrunId = -1;
                }

                alert(rowdata.YuklenmeTarihi);

                var data = $.param(rowdata);
                //alert(data);
                $.ajax({
                    dataType: 'json',
                    url: 'UpdateEditGrid',
                    data: data,
                    success: function (data, status, xhr) {
                        gridDataAdapter.dataBind();

                        /*if (data.Success == false)
                        alert(JSON.stringify(data));*/

                        /*if (data.Success == true && gridDataAdapter != undefined)
                        gridDataAdapter.dataBind();*/
                    },
                    error: function (xhr, status, error) {
                        alert(JSON.stringify(xhr));
                    }
                });
            }
        };

       var gridDataAdapter = new $.jqx.dataAdapter(gridSource, {
            downloadComplete: function (data, status, xhr) { },
            loadComplete: function (data) { },
            loadError: function (xhr, status, error) { alert(JSON.stringify(xhr)); }
        });



        // initialize jqxGrid
        $("#jqxgrid").jqxGrid(
        {
            width: 670,
            source: gridDataAdapter,
            editable: true,
            theme: theme,
            selectionmode: 'singlecell',
            columns: [
              { text: '#', datafield: 'KargoId', width: 40 },
              { text: 'Ad', columntype: 'textbox', datafield: 'Ad', width: 90 },
              { text: 'Soyad', datafield: 'Soyad', columntype: 'textbox', width: 90 },                  
              { text: 'YuklenmeTarihi', datafield: 'YuklenmeTarihi', columntype: 'datetimeinput', width: 90, cellsalign: 'right', cellsformat: 'd',
                  validation: function (cell, value) {
                      var year = value.getFullYear();
                      if (year >= 2013) {
                          return { result: false, message: "Yükleme zamanı 1/1/2013 tarihinden önce olmalı!" };
                      }
                      return true;
                  }
              },
              { text: 'Adet', datafield: 'Adet', width: 70, cellsalign: 'right', columntype: 'numberinput',
                  validation: function (cell, value) {
                      if (value < 1 || value > 15) {
                          return { result: false, message: "Adet 1-15 aralığında olmalı!" };
                      }
                      return true;
                  },
                  initeditor: function (row, cellvalue, editor) {
                      editor.jqxNumberInput({ decimalDigits: 0, digits: 3 });
                  }
              },
              { text: 'Fiyat', datafield: 'Fiyat', width: 65, cellsalign: 'right', cellsformat: 'c2', columntype: 'numberinput',
                  validation: function (cell, value) {
                      if (value < 0 || value > 15) {
                          return { result: false, message: "Fiyat 0-15 aralığında olmalı!" };
                      }
                      return true;
                  },
                  initeditor: function (row, cellvalue, editor) {
                      editor.jqxNumberInput({ digits: 3 });
                  }
              }
            ]
        });
4

2 に答える 2

2

updaterow 関数では、データ定義(var data = $.param(rowdata);) の前に、日付データを次のように変更しました。

                var dateToChange = JSON.stringify(rowdata.YuklenmeTarihi);
                rowdata.YuklenmeTarihi = dateToChange.replace(/"/g, '');

その後、うまくいきました。replace(/"/g, '')疑問がある場合は、すべての二重引用符を削除します。

于 2012-07-12T13:22:54.573 に答える
0

jqxGrid はクライアント側のウィジェットであるため、サーバーにデータを送信しません。サーバーの更新は、ウィジェットによって処理されません。更新機能と、Ajax ポスト経由で送信するデータを確認してください。

于 2012-07-12T11:38:11.217 に答える