2016-06-09 4 views
0

Ich benutze jqGrid 4.4.4. Ich habe eine Datumsauswahl für eine Spalte und es gibt das heutige Datum zurück. Ich brauche es nur, um das heutige Datum für das modale Add-up-Popup zu verwenden. Wenn jedoch ein Datensatz inline bearbeitet wird, muss das Datum nicht auf das aktuelle Datum geändert werden, wenn der Benutzer auf einen Datensatz klickt, um ihn inline zu bearbeiten.jqGrid Disable Date Picker Wert für Inline Edit

Dies führt zu Datenintegritätsproblemen. Wenn ein Benutzer einen vorhandenen Datensatz bearbeitet, ändert sich das Datum in das heutige Datum.

Wie kann ich es beibehalten, um einen neuen Datensatz über das Modal hinzuzufügen und gleichzeitig zu verhindern, dass es beim Inline-Editing einen Fehler macht? Hier

ist der Code mit dem Datepicker in den Bearbeitungsoptionen:

{ key: false, name: 'CHK_DT_RCVD', width: '130px', index: 'CHK_DT_RCVD', 
      editable: true, formatter: 'date', 
      formatoptions: { newformat: 'm-d-Y' }, 
      formoptions: {}, 
      editrules: { custom: true, custom_func: validDateCheck }, 

      editoptions: 
      { 

       dataInit: function (element) 
       { 
        $(element).datepicker({ 

         id: 'entryDate_Datepicker', 
         dateFormat: 'mm-dd-yy', 
         maxDate: new Date(2020, 0, 1), 
         showOn: 'focus' 
        }).val(moment(new Date()).format('MM/DD/YYYY')); 
       } 
      } 
     }, 

Antwort

1

allererst Sie datepicker innerhalb von setTimeout initialisieren sollte. Das Problem: Die dataInit könnte (wird) vorelement auf der HTML-Seite (element ist DOM-Element getrennt) sein.

Innerhalb von setTimeout können Sie über die Eltern von element reisen und versuchen, herauszufinden, ob das Element innerhalb von tr.jqgrow oder nicht ist. Wenn $(element).closest("tr.jqgrow").length > 0 dann ist der Datepicker innerhalb der Inline-Bearbeitung (oder Zellbearbeitung). Sie sollten .val(moment(new Date()).format('MM/DD/YYYY')); in dem Fall nicht verwenden.

Zusätzlich können Sie in Betracht ziehen, defaultValue Eigenschaft von editoptions zu verwenden. Es wird im Hinzufügen-Dialog der Formularbearbeitung verwendet. Wahrscheinlich brauchen Sie keine .val(...) nach der Spezifikation von defaultValue zu verwenden.

By the way, würde ich empfehlen Sie nicht benötigte key: false und index: 'CHK_DT_RCVD' Eigenschaften zu entfernen und width: '130px' zu width: 130 zu beheben, da der Wert von width integer sein.