2012-02-28 52 views
1

我正在使用一個CGridView,其中我有一個CButtonColumn,我已經定義了一個按鈕。 「click」js沒有被調用。 URL被調用並完成。我想向用戶顯示確認信息,但它永遠不會顯示。根據文檔'點擊'是一個JS功能被點擊後被調用,但它不適合我。CGridView CbutonColumn自定義按鈕單擊不工作

$this->widget('zii.widgets.grid.CGridView', array(
      'dataProvider'=>$model->search(), 
      'filter'=>$model, 
      'columns'=>array(
        'id', 
        'name', 
        'question', 
        'created',      
        array(
          'class'=>'CButtonColumn', 
          'header'=>'Reset', 
          'template'=>'{reset}', 
          'buttons'=>array(
            'reset'=>array(
              'label'=>'Reset', 
              'click'=>'function(){alert("Are you sure?");}', 
              'imageUrl'=>Yii::app()->request->baseUrl.'/images/reset.png', 
              'url'=>'Yii::app()->createUrl("favs/reset", array("id"=>$data->id))',           
              'options'=>array(
                'ajax'=>array(
                  'type'=>'POST', 
                  'url'=>"js:$(this).attr('href')",                
                ), 
              ), 
            ), 
          ),      
        ),      
      ), 
    )); 

回答

1

這有事情做與被Yii爲你的代碼生成的jQuery的:

jQuery('#your-grid-id a.reset').live('click',function(){alert("Are you sure?");}); 
/* more jquery ... 
... 
... 
*/ 
jQuery('body').undelegate('#yt1','click').delegate('#yt1','click',function(){jQuery.ajax({'type':'GET','url':$(this).attr('href'),'cache':false,'data':jQuery(this).parents("form").serialize()});return false;}); 
// similar jquery follows for the other rows of the grid view 

正如你所看到的,<a>標籤的單擊事件處理程序是首先你提供報警功能,使用click選項。
然後,稍後使用undelegate刪除此單擊事件處理程序,並使用delegate添加另一個處理程序,這是因爲您已添加ajax選項而發生的。
如果您刪除了ajax選項,您將看到對話框,您將看到undelegate ...委託序列已從生成的代碼中刪除。

實現自己的功能,你可以做別的事情:

  1. 使用jQuery的阿賈克斯beforeSend選項來顯示確認對話框,警告不確認,順便說一句。
  2. 使用jQuery的ajax的success選項來更新您的視圖,或向用戶顯示重置已完成的消息。
+0

希望這有助於..lemme知道你是否需要更多的澄清 – 2012-02-28 15:05:44

+1

現貨。謝謝。至於警報,我正在拼命修復它,所以添加了我能想到的最簡單的js功能。在不同的筆記中,您是否特別使用某些東西來調試jquery js,而不僅僅是讀取源代碼或螢火蟲。 – Orlymee 2012-02-28 15:08:23

+0

好的,謝天謝地,您只是在示例中使用了警報。其實我不在客戶端工作太多,所以我不知道許多工具,螢火蟲大部分時間都適用於我。如果我遇到過任何事情,如果我記得,請確保我會給你留言。 – 2012-02-28 15:19:05