2013-02-05 44 views
1

Yii在這裏的新手 我已經嘗試了不止一次,想辦法在CGRIDVIEW中以簡單幹淨的方式包含Ajax/JS函數, 代碼基本上Yii:在CGridview中包含JS/Ajax函數的最佳性能人工的方式

'click'=> "function(){ 
    $.fn.yiiGridView.update('news-grid', { 
    type:'POST', 
    url:$(this).attr('href'), 
    success:function(data) { 
     $('#AjFlash').html(data).fadeIn().animate({ 
      opacity: 1.0 
     }, 3000).fadeOut('slow'); 

     $.fn.yiiGridView.update('news-grid'); 
    } 
}) 
return false; 

}」

在您看來,什麼最清潔,最性能benificial辦法,包括本? 感謝您的時間!

+0

你想做什麼?爲什麼要調用$ .fn.yiiGridView.update('news-grid');再次成功? – Asgaroth

+0

基本上,我調用控制器函數來更新數據庫值並相應地更新gridview。我遵循本教程,http://www.yiiframework.com/wiki/410/create-custom-button-button-with-ajax-function-in-cgridview/ – KayKay

+0

'$ .fn.yii ...'已棄用,新的語法是'$('#news-grid')。yiiGridView('update');' –

回答

0

我不知道但是我沒有看到必須強制網格更新兩次在一個單一的操作,我也不喜歡包括我的JavaScript那樣。根據我的需要有幾種方法,對於這個答案生病演出的緣故,你最簡單的一個:

創建一個全局對象,在一個單獨的文件:

//app.js 
var App = { 
    updateSomething: function() { 
    $.post(
     $(this).attr('href'), 
     success:function(data) { 
     $('#AjFlash').html(data).fadeIn().animate({ 
      opacity: 1.0 
     }, 3000).fadeOut('slow'); 
     $.fn.yiiGridView.update('news-grid'); 
     } 
    ); 
    return false; 
    } 
}; 

而且可以包括通過調用CCLientScript::registerScriptFile

Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl."js/app.js"); 

並在網格上,從你的控制器文件:

'click'=> "js:App.updateSomething", 

有很多更好的方法,但對於想要擁有某種組織的js初學者來說,這更簡單。

+0

謝謝Asgaroth快速回答!我仍然是一個JS/AJAX初學者,我想在這裏實現的是使用CButtonColumn更新一個值,在URL中我添加了一個控制器動作鏈接,但是我現在想實現的是更新cgridview而不必重新加載整個頁面。不幸的是,我遵循這個教程,因爲它是我發現的唯一一個。如果你能指向我更廣泛的一個,我會永遠感謝你! – KayKay

+0

我的例子不適合你嗎? – Asgaroth

+0

它絕對做到了,謝謝!但是頁面正在被重新加載,但正如我所說的,我正試圖以性能方式實現它,只有那個網格被更新。 – KayKay

相關問題