2012-07-17 66 views
2

因此,我發現了一些很好的修復方法,用於對齊確認刪除,編輯,查看等對話框here。但是,如果在網格上選擇沒有行,則會出現一個不同的對話框,其中顯示一個簡單的「警告:請選擇行」。除了這個對話有可怕的語法,我似乎無法找到處理這個對話的事件,以便我可以根據需要重新定位。JqGrid:設置「No Rows Selected」對話框的位置

我爲navGrid中的每個事件添加了處理程序,我可以找到並使用BugZilla來查看它是否會停止在這些事件中無濟於事。 當選擇行時,它會觸發刪除事件罰款。想法?下面是我的代碼:

$('#sessionGrid').jqGrid({...}).navGrid('#sessionPager', { 
      add: false, 
      edit: false, 
      del: true, 
      search: false, 
      closeOnEscape: true 
     }, { 
      afterShowForm: function (form) { 
       form.closest('div.ui-jqdialog').center(); 
      } 
     }, { 
      afterShowForm: function (form) { 
       form.closest('div.ui-jqdialog').center(); 
      } 
     }, { 
      caption: "Delete", 
      msg: "Delete the selected sessions?", 
      bSubmit: "Delete", 
      bCancel: "Cancel", 
      afterShowForm: function (form) { 
       form.closest('div.ui-jqdialog').center(); 
      } 
     }, { 
      afterShowForm: function (form) { 
       form.closest('div.ui-jqdialog').center(); 
      } 
     }, { 
      afterShowForm: function (form) { 
       form.closest('div.ui-jqdialog').center(); 
      } 
     }); 

回答

0

grid.formedit.js下面的代碼是用來顯示該對話框:

if (o.del) { 
    tbd = $("<td class='ui-pg-button ui-corner-all'></td>"); 
    pDel = pDel || {}; 
    $(tbd).append("<div class='ui-pg-div'><span class='ui-icon "+o.delicon+"'></span>"+o.deltext+"</div>"); 
    $("tr",navtbl).append(tbd); 
    $(tbd,navtbl) 
    .attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids}) 
    .click(function(){ 
     if (!$(this).hasClass('ui-state-disabled')) { 
      var dr; 
      if($t.p.multiselect) { 
       dr = $t.p.selarrrow; 
       if(dr.length===0) {dr = null;} 
      } else { 
       dr = $t.p.selrow; 
      } 
      if(dr){ 
       if($.isFunction(o.delfunc)){ 
        o.delfunc.call($t, dr); 
       }else{ 
        $($t).jqGrid("delGridRow",dr,pDel); 
       } 
      } else { 
// !!! The actual dialog is displayed here - 
       $.jgrid.viewModal("#"+alertIDs.themodal,{gbox:"#gbox_"+$.jgrid.jqID($t.p.id),jqm:true});$("#jqg_alrt").focus(); 
      } 
     } 
     return false; 
    }).hover(
     function() { 
      if (!$(this).hasClass('ui-state-disabled')) { 
       $(this).addClass("ui-state-hover"); 
      } 
     }, 
     function() {$(this).removeClass("ui-state-hover");} 
    ); 
    tbd = null; 
} 

不幸的jqGrid不適用於本揭露的事件。但是,你可能有運氣綁定你自己的功能到刪除按鈕的click事件。在同一個文件中,您可以看到DOM ID是如何分配給刪除按鈕:

.attr({"title":o.deltitle || "",id: pDel.id || "del_"+elemids}) 

在本質上,你可以通過id參數作爲刪除參數的一部分,或者如果你不這樣做,它會默認到elemids這是分配您的網格的DOM ID(EG:您的選擇器將是'#del_mygrid')。

無論如何,你可以在你的click事件處理程序中使用類似jQuery('div.ui-jqdialog').center();的東西來根據需要重新定位對話框。

這有幫助嗎?


順便說一句,實際的對話文本是 grid.locale-en.js -

alerttext: 「請選擇行」,

我同意這是可怕:) 好消息是這是一個單獨的js文件,所以你可以根據需要修改它。

+0

是的,這有助於很多。感謝堆! – Britton 2012-07-19 17:22:44

+0

不客氣,很高興它幫助你! – 2012-07-19 17:46:07

相關問題