2014-04-15 264 views
1

我在我的jqGrid編輯窗體中添加了一個自定義按鈕,使用beforeShowForm事件創建。點擊我想要執行的自定義按鈕ADD操作。下面 是我的代碼..在編輯窗體中添加自定義按鈕

beforeShowForm: function(form) { 
      //Create Custom ADD Button 
      $('<a href="#">Add<span class="ui-icon ui-icon-disk"></span></a>') 
      .click(function() { 
       var $self = $(this); 
       $self.jqGrid("editGridRow", $self.jqGrid("getGridParam", "selrow"), 
       { 
        editData: {//Function to Add parameters to the status 
        oper: 'add', //trying to pass parameter to server 
        }, 
       }); 
      }).addClass("fm-button ui-state-default ui-corner-all fm-button-icon-left") 
       .prependTo("#Act_Buttons>td.EditButton"); 

代碼
editData: {//Function to Add parameters to the status oper: 'add', //trying to pass parameter to server },

顯示類型錯誤:一個(...)[0]的.p是未定義錯誤。任何想法如何實現這?

Add Button

回答

2

在你的代碼的主要錯誤是在您使用this的地方。 beforeShowForm裏面的this已初始化爲網格的DOM,但click裏面的事件處理函數爲$('<a href="#">Add<span class="ui-icon ui-icon-disk"></span></a>'),它初始化爲<a>元素。所以你會得到錯誤「TypeError:a(...)[0] .p is undefined」。修復代碼你只需要移動外回調函數beforeShowForm$this變量初始化的:

beforeShowForm: function(form) { 
    var $self = $(this); // !!! place it here !!! 

    //Create Custom ADD Button 
    $('<a href="#">Add<span class="ui-icon ui-icon-disk"></span></a>') 
     .click(function() { 
      $self.jqGrid("editGridRow", $self.jqGrid("getGridParam", "selrow"), { 
       editData: {//Function to Add parameters to the status 
        oper: 'add', //trying to pass parameter to server 
       }, 
      }); 
     }).addClass("fm-button ui-state-default ui-corner-all fm-button-icon-left") 
      .prependTo("#Act_Buttons>td.EditButton"); 
} 
+0

感謝。你是對的。但它沒有被髮布到服務器。我想我不需要在這裏傳遞網址。有任何想法嗎 ?? – Wahab

+0

@Wahab:不客氣!發佈到服務器取決於您在jqGrid中使用的其他選項*。你是否設置了例如'editurl'?或者,您可以直接使用'url':'$ self.jqGrid(「editGridRow」,$ self.jqGrid(「getGridParam」,「selrow」),{url:「yourServerUrl」,editData:{...}}); ' – Oleg

+0

我使用editurl。我想在編輯表單中實現'添加'操作。爲此,我需要新的網址或可以使用操作符editurl:add? – Wahab

相關問題