2012-06-11 122 views
1

即時通訊使用jqgrid,我在觸發某些事件時觸發reloadGridjqgrid reloadGrid事件監聽器

我只想處理reloadGrid事件,以便我能夠從重新加載的userData中獲得。 對此,您可能會建議我使用loadComplete,但loadComplete在首次加載電網時稱爲事件。但我只想聽聽reloadGrid活動。

我試過以下,但不能達到我想要的。

if($('#table').trigger('reloadGrid').length>0) 
{ 
var userData = $('#table').jqgrid('getGridParam', 'userData'); 
//here the userData is old data not the reloaded one. 
} 

任何人都可以建議我任何工作。

+0

你想用'$( '#表')是什麼。觸發器( 'reloadGrid')。長度> 0'?代碼的第一部分('$('#table')。trigger('reloadGrid')')觸發重載。你想測試哪個'長度?你想在重新加載之前或之後設置'userData'嗎?你是否想要設置'userData',只要它是由你自己的代碼**觸發**,或者你想在任何reloadGrid事件(例如在排序或分頁或數據)上做同樣的事情? – Oleg

回答

1

爲什麼不能做到這一點:

// to trigger the event 
$('#table').trigger('reloadGrid'); 

// to listen to the event 
$('#table').on('reloadGrid', function() { 
    var userData = $('#table').jqgrid('getGridParam', 'userData'); 
    //here the userData is old data not the reloaded one. 
}) 

您使用.trigger()觸發事件,並聽取使用.on()事件...... docs for .on() here

+0

我試過你的代碼。但事件並沒有被觸發... – Sandeep

+1

@Sandeep:發佈的代碼是正確的,它回答了你問的問題,但你用'loadComplete'的答案表明你需要*而不是你問什麼*。 'loadComplete'不僅在觸發器('reloadGrid')'的情況下被調用。此外,即使你明確地調用'trigger('reloadGrid')',loadComplete也不會被調用。例如,可以調用「loadError」,或者可以通過從'beforeProcessing'返回'false'來停止處理。以任何方式,**您的問題的文本不符合你真正想要的**。 – Oleg

+0

@Oleg謝謝......不太確定OP瞭解他們想要什麼或他們在做什麼...... – ManseUK

0

我做了一個變通爲。

有一個全局變量作爲

var loadedonce = false; 

而在loadComplete監聽器做了以下。

loadComplete: function(data){ 
if(!loadedonce){ 
//some manupulations 
loadedonce = true; 
} 
else{ 
var userData = $('#table').jqgrid('getGridParam', 'userData'); 
//this userData has the latest data i needed 
} 
} 

如果任何人有更好的解決方法請你分享......

+0

如果你想發佈你自己的答案,那麼花時間與其他人一起**是非常糟糕的!你發佈了可以在很多情況下解釋的問題,併發布了他自己的答案,並解釋了你的問題。這樣的問題和答案只對你有一些價值,對其他讀者不具有一定的價值。 – Oleg