2009-09-06 37 views
4

我想處理jqgrid中的自定義按鈕的點擊。我有按鈕顯示,但當他們被點擊時,我的功能不運行。如果我單擊jqgrid外部的按鈕,腳本就會運行。 jqgrid是否消耗按鈕點擊?不知道我失蹤或不理解。這是網格。我沒有重新加載整個網格的原因是服務器上的處理過多,並且一旦editurl處理「發送」,就需要手動刪除客戶端上的行。 See: $(".sendbuttons").click(function(){如何將腳本添加到jqgrid中的行上的自定義按鈕?

...

 <style type="text/css"> 
     .sendbuttons { 
      height:19px; 
      width:60px; 
      color:red; 
     } 
    </style> 

    <script language="javascript"> 

    jQuery(document).ready(function(){ 
     var last_row; 
     jQuery("#gridlist").jqGrid({ 
      url:'manual_responses.php', 
      datatype: "json", 
      colNames:['ID','Image','Keyword','send Found','Proposed send',''], 
      colModel:[ 
       {name:'item_id', index:'item_id', width:45, editable:false, hidden:true}, 
       {name:'image', index:'image', width:45}, 
       {name:'keyword',index:'keyword', width:100, editable: false}, 
       {name:'item_found',index:'item_found', width:130, editable: false}, 
       {name:'proposed_send',index:'proposed_send', width:130, editable: true, edittype:"textarea", editoptions:{rows:"2",cols:"37"}}, 
       {name:'options',index:'options',width:40,editable: false} 
      ], 
      rowNum:40, 
      rowList:[20,40,60], 
      imgpath: 'css/themes/sand/images', 
      sortname: 'keyword', 
      viewrecords: true, 
      sortorder: "asc", 
      caption:"Proposed sends", 
      onSelectRow: function(item_id){ 
       if(item_id && item_id!==last_row){ 
        jQuery("#gridlist").restoreRow(last_row); 
        jQuery("#gridlist").editRow(item_id,true); 
        last_row=item_id; 
       } 
      }, 
      loadComplete: function(){ 
       //alert('ok, loadComplete running'); 
       var ids = jQuery("#gridlist").getDataIDs(); 
       for(var i=0;i<ids.length;i++){ 
        var cl = ids[i]; 
        send = "<input class='sendbuttons' id='tbuttonSend"+cl+"' type='button' value='Send' /><br />"; 
        clear = "<input class='sendbuttons' id='tbuttonClear"+cl+"' type='button' value='Send' /><br />"; 
        jQuery("#gridlist").setRowData(ids[i],{options:send+clear}) 
       } 
      }, 
      editurl: "item_send.php", 
      height:400, 
      width:796, 
      reloadAfterSubmit:false 
     }).navGrid('#pager2',{edit:true,add:false,del:false }); 

     $(".sendbuttons").click(function(){ 
      alert("got to 1"); 
     }); 
    }); 

    </script> 
</head> 
<body> 

    <table id="gridlist" class="scroll" cellpadding="0" cellspacing="0"></table> 
    <div id="pager2" class="scroll" style="text-align:center;"></div> 

    <input type='button' class='sendbuttons' id='323423x' value='go:'/> 

</body> 
</html> 
+0

我正在努力自己回答這個問題,我想我正朝着正確的方向前進。我修改了我的按鈕點擊事件來調用saveRow函數,並傳遞了succesfunc函數和url。不幸的是,這個網址似乎被誤解了......在Firebug控制檯裏它說item_send沒有定義。網址應該是什麼樣的限制?我的網址是item_send.php。 send =「
」; – dwaz 2009-09-09 12:42:33

回答

5

很明顯,單擊事件,

$(".sendbuttons").click(function(){ 
    alert("got to 1"); 
}); 

永遠不會觸發,因爲該行的點擊消耗它。但是,您可以在按鈕中放入自己的onclick代碼。

send = "<input name='send' class='tweetbuttons' id='tbuttonSend"+cl+ 
     "' type='button' value='Send' 
     onclick=jQuery('#list2').saveRow("+cl+",function(){alert('made it here')},item_send); /><br />"; 

正如我的評論所述,我可以用任何參數調用saveRow函數。

0

添加

$(".sendbuttons").click(function(){ 
    alert("got to 1"); 
}); 

在gridComplete回調和它觸發。

loadComplete: function(){ 
    //alert('ok, loadComplete running'); 
    var ids = jQuery("#gridlist").getDataIDs(); 
    for(var i=0;i<ids.length;i++){ 
     var cl = ids[i]; 
     send = "<input class='sendbuttons' id='tbuttonSend"+cl+"' type='button' value='Send' /><br />"; 
     clear = "<input class='sendbuttons' id='tbuttonClear"+cl+"' type='button' value='Send' /><br />"; 
     jQuery("#gridlist").setRowData(ids[i],{options:send+clear}) 
} 
    $(".sendbuttons").click(function(){ 
     alert("got to 1"); 
    }); 
}, 
相關問題