2016-06-09 99 views
0

我正在使用jqGrid 4.4.4。我有一個列日期選擇器,它返回今天的日期。我只需要它默認添加模式彈出窗口的今天日期。但是,當某人正在內聯編輯記錄時,我需要日期不會更改爲當天的日期,當用戶點擊一條記錄進行內聯編輯時。jqGrid禁用內聯編輯的日期選擇器值

這會導致數據完整性問題,因爲當用戶編輯現有記錄時,日期會更改爲今天的日期。

如何保持通過模態添加新記錄的方式,同時防止內嵌編輯時的默認值?

這裏是在編輯選項的日期選擇器代碼:

所有的
{ 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')); 
       } 
      } 
     }, 

回答

1

首先,你應該初始化datepickersetTimeout內。問題:dataInit可能(將被稱爲)之前element被放置在HTML頁面(element是斷開的DOM元素)。

裏面的setTimeout你可以通過element的父母,並試圖找出該元素是否在tr.jqgrow之內或不。如果$(element).closest("tr.jqgrow").length > 0那麼日期選擇器在內聯編輯(或單元格編輯)中。你不應該在案件中使用.val(moment(new Date()).format('MM/DD/YYYY'));

此外,您可以考慮使用editoptionsdefaultValue財產。它將用於表單編輯的添加對話框。可能在defaultValue的指定之後,您不需要使用任何.val(...)

順便說一句,我建議你刪除不需要的key: falseindex: 'CHK_DT_RCVD'性能和修復width: '130px'width: 130因爲width值必須是整數。