2012-02-13 36 views
0

我是jqgrid的新成員。如何將jqgrid中編輯的多行傳遞給服務器控制器?

我想通過在jqgrid中編輯的多行來傳遞MVC服務器控制器。 控制器期望json字符串類型的數據。

我的jsp如何將所有行傳遞給控制器​​?

的jQuery( 「#拯救」)點擊(函數(){ 警報( 「中輸入保存FN」);

var gridData=jQuery("#gridList").jqGrid('getGridParam','data'); 

    jQuery.ajax({ 
     url   : '/uip/web/p2/saveEmployeeList.dev' 
     ,type  : 'POST' 
     ,cache  : false 
     ,data  : JSON.stringify(gridData) 
     ,contentType : 'application/json; charset=utf-8' 
     ,dataType : 'json' 
    })   

});

我在控制器中打印出HttpServletRequest。有一行存在。

即使一點線索都會有幫助。

回答

3

如果我理解你正確,你想在編輯任何行後保存所有編輯的行,而不是Ajax請求,而只需一次Ajax操作。

如果是這樣,這可能是解決方案。您可以使用配置中的「clientArray」選項作爲URL參數,而不是Ajax。這會導致jqGrid在JavaScript內部保存每個編輯過的行,並向您的服務器發送任何內容。

隨着保存按鈕可以按如下做東西的onclick:

var changedRows = []; 

//changedRows is a global array 
if($('#save-rows').length) { 
    $('#save-rows').click(function() { 
    var postData = {} 

    $.each(changedRows, function(key) { 
     postData[key] = $('#paymentsgrid').jqGrid('getRowData', this); 
    }); 

    $.post(baseUrl + '/controller/action', { 
     'data' : postData 
    }, function(response) { 
     $('<div></div>').html(response.content).dialog({ 
      'title' : 'Message', 
      'modal' : true, 
      'width' : 800, 
      'height' : 400, 
      'buttons' : { 
       'OK' : function() { 
        $(this).dialog('close'); 
       } 
      } 
     }); 

     if(response.reload) { 
      $('#grid').trigger('reloadGrid'); 
     } 

    }, 'json'); 
    }); 
} 

同樣重要的是指定在網格中保存事件:

$('#paymentsgrid').jqGrid('saveRow', paymentController.lastsel, null, 'clientArray', null, function(rowId) { 
    changedRows.push(rowId); 
}); 

你也許應該修改或優化有些東西,但基本上,這應該工作或給你一個想法如何實現你想要的。

+0

非常感謝。 $ .post(baseUrl +'/ controller/action',{'data':postData}幫助。 – SURYA 2012-02-15 01:47:22

+0

沒問題,如果我的回答是你的解決方案,請接受:) – 2012-02-15 07:49:45

+0

'我們如何調用saveRow事件?我打算在這裏放置一個外部保存按鈕。 – 2014-11-26 10:20:04

相關問題