2016-01-06 61 views
1

我使用的jqGrid 4.9.3預 - 免費 這個例子ok-soft-gmbh.com(奧列格):jqGrid的自定義調用編輯模式窗體

demo

但是我把我的代碼行:

ondblClickRow: function (rowid) { 
    $(this).jqGrid("viewGridRow", rowid, { caption: "Details of the invice" }); 
} 

每個新挑戰的模態窗口正在向下移動。 我發現了一個行,其中的變化:

 if (!o.recreateForm) { 
      var formProp = $self.data("formProp"); 
      console.log(formProp) 
      if (formProp) { 
       formProp.top = Math.max(formProp.top, 0); 
       formProp.left = Math.max(formProp.left, 0); 
       $.extend(o, formProp); 
      } 
     } 

每次調用一個模態窗口增加formProp.topformProp.left

如何解決這個問題?

對於奧列格:Добрыйдень! МненужновызыватьviewGridRowиeditGridRowкастомно。 Тутпобольшейчаститольковыможетепомочь。 Уменяпривызовемодальногоокна,скаждымвызовомувеличиватся頂部和left.Примерсвоегокоданепривожу。 Ноеслинужнонапишу。

+0

Добрыйдень!你能否加入演示,以便重現問題?我無法在[演示](http://www.ok-soft-gmbh.com/jqGrid/ViewFormOnDoubleClick1.htm)上重現和更​​改'top'和'left'的位置。 – Oleg

+0

япокамогусвойкоднаписать: –

+0

我創建演示https://jsfiddle.net/OlegKi/tzp91wnf/其再現了這個問題。我會檢查它並稍後將錯誤修復與我的答案一起發佈。 – Oleg

回答

0

謝謝你的錯誤報告!我剛剛發佈the bug fix。它改進的內部savePositionOnHide功能的用於保存的先前位置的代碼從

savePositionOnHide = function (propName, frmgr, h) { 
    var $w = h.w, $form = $(frmgr), $gbox = this.closest(".ui-jqgrid"), top, left; 
    if ($.contains($gbox[0], $w[0])) { 
     // we use below .style.height and .style.width to save correctly "auto" and "100%" values 
     // the "px" suffix will be saved too, but it's not a problem 
     top = getCssStyleOrFloat($w, "top"); 
     left = getCssStyleOrFloat($w, "left"); 
    } else { 
     top = $w.offset().top - 
       ($gbox.offsetParent().offset().top + 
       $gbox.offset().top + 
       $gbox.position().top + 
       parseFloat($gbox.css("border-top-width") || 0)); 
     left = $w.offset().left - 
       ($gbox.offsetParent().offset().left + 
       $gbox.offset().left + 
       $gbox.position().left + 
       parseFloat($gbox.css("border-left-width") || 0)); 
    } 
    this.data(propName, { 
     top: top,     //parseFloat($w.css("top")), 
     left: left,    //parseFloat($w.css("left")), 
     width: getCssStyleOrFloat($w, "width"),    //$(h.w).width(), 
     height: getCssStyleOrFloat($w, "height"),   //$(h.w).height(), 
     dataheight: getCssStyleOrFloat($form, "height") || "auto", 
     datawidth: getCssStyleOrFloat($form, "width") || "auto" 
    }); 
    $w.remove(); 
    if (h.o) { h.o.remove(); } 
} 

savePositionOnHide = function (propName, frmgr, h) { 
    var $w = h.w, $form = $(frmgr), $gbox = this.closest(".ui-jqgrid"), 
     getTopOrLeftRelativeToGbox = function (topOrLeft) { 
      return $w.offset()[topOrLeft] - 
       ($gbox.offsetParent().offset()[topOrLeft] + 
       $gbox.offset()[topOrLeft] + 
       $gbox.position()[topOrLeft] + 
       parseFloat($gbox.css("border-" + topOrLeft + "-width") || 0)); 
     }; 
    this.data(propName, { 
     top: getTopOrLeftRelativeToGbox("top"), 
     left: getTopOrLeftRelativeToGbox("left"), 
     width: getCssStyleOrFloat($w, "width"), 
     height: getCssStyleOrFloat($w, "height"), 
     dataheight: getCssStyleOrFloat($form, "height") || "auto", 
     datawidth: getCssStyleOrFloat($form, "width") || "auto" 
    }); 
    $w.remove(); 
    if (h.o) { h.o.remove(); } 
}, 

我希望問題已在表格編輯的輸入參數的所有組合的情況下。至少演示https://jsfiddle.net/OlegKi/tzp91wnf/現在可以正常工作。

相關問題