2011-07-21 12 views
4

jqgridのビューフォームを画面の中央に配置したいと考えています。高さはデータ量に応じて自動的に設定されるため、レンダリング後の中心位置を計算する必要があります。ですから、私はafterShowFormを使いたいと思います。不幸なことに、それはまったく呼ばれていません。古いバージョンのjqGridを試しましたが(おそらく最新のバグがあります)、問題は解決しませんでした。だれかが発砲していない理由を知りましたか? 'beforeShowForm'の 'afterShowForm'を変更すると、それは起動されることに注意してください。しかし、高さはまだ計算されていません。ありがとう! (もちろん、あなたは私の目標を達成するための別の方法を提案することを歓迎する以上のものです!)。コード:jqgrid afterShowFormが呼び出されていない

 $("#grid").jqGrid("navGrid", "#pager", 
     { view: true, addfunc: additem, editfunc: edititem, delfunc: deleteitem }, 
     {}, 
     {}, 
     {}, 
     {}, 
     { width: 350, 
      afterShowForm: function (formid) { 
       alert('yey'); 
       // Here I want to center the form 
      } 
     } 
     ); 

編集:ウィキでは、ビューフォームにafterShowFormイベントがないことがわかりました。それだけでOnCloseのとbeforeShowFormを持っている:(ので、私はそれが中央このように位置を設定することはできませんだと思う...問題の

+0

http://stackoverflow.com/questions/1234461/jqgrid-default-add-edit-buttons-processing-server-response –

答えて

2

理由は非常に簡単です:afterShowFormが本当にビューのフォームで存在しませんのみツリーのイベントがサポートされています。OnCloseの、beforeShowFormbeforeInitDataをあなたがbeforeShowFormを使用していますが、別のスレッド内で必要なものを行う必要がありますので:としてあなたも0(代わりに50の)を使用することができ、多くの場合

beforeShowForm: function($form) { 
    setTimeout(function() { 
     // do here all what you need (like alert('yey');) 
    },50); 
} 

setTimeout JavaScript関数の2番目のパラメータ

+0

うん..私はそれがこれまでの最高の修正だと思うこれを読ん;)レッツすぐにどこかでafterShowForm実装を望みます。ありがとう! – user825887

+0

@ user825887:ようこそ!対応する変更要求を[trirand forum](http://www.trirand.com/blog/?page_id=393)に置くことができます。 – Oleg

0

さて、私はそれをこのように解決しました。私は2番目のsetTimeout()を使用しています。そうしないと、ウィンドウが古い位置から画面の中央に移動するときに 'フラッシュ'が表示されるためです。ありがとう!

var viewform = "#viewmodgrid"; 

     function centerViewForm() { 
      $(viewform).css('visibility', 'hidden'); 
      setTimeout(function() { 
       $(viewform).css('left', ($(document).width()/2) - ($(viewform).width()/2)); 
       $(viewform).css('top', ($(document).height()/2) - ($(viewform).height()/2)); 
       $(viewform).css('visibility', 'visible'); 
      }); 
     } 

...     beforeShowForm: function (formid) { 
        centerViewForm(); 
       } 
関連する問題