2012-10-19 46 views
1

我寫了一個MyGridView類,它從CGridView擴展而來。
MyGridView會自動在標題中生成兩個按鈕, 一個是pdf圖標,另一個是excel圖標。但我怎樣才能將事件綁定到這兩個圖標? ,以便我可以使用我的代碼基於數據提供者和列爲此CGridView生成PDF或EXCEL。如何將事件綁定到我的GridView代碼(它從CGridView擴展而來)

PDF導出代碼和Excel導出代碼都準備好了,我只是不知道如何綁定服務器端事件的類

回答

0

這在很大程度上取決於你的代碼來生成PDF和EXCEL文件,有幾種方法可以「綁定」這些按鈕來生成文件。

  1. 在呈現在第一位置
  2. 使用相同的代碼庫生成該CDataProvider不同的動作網格視圖同樣的動作。

對於第一種情況,你可以傳遞一個參數來告訴它來生成相應的文件的操作:

<?php 
public function actionIndex() 
{ 
    //Code base to generate the CActiveData provider. 

    //Check if we are asking for the PDF version 
    if(isset($_GET["pdf"])){ 
    //Your code to generate the PDF 
    }elseif (isset($_GET["excel"])) { 
    //Your code to generate the EXCEL 
    }else{ 
    //render the view with the Grid 
    } 
} 

?> 

然後在你的MyGridClass,只需將您的按鈕對應的網址:

//For the pdf 
Yii::app()->controller->createUrl('', array('pdf' => '1')); 
//For the excel 
Yii::app()->controller->createUrl('', array('excel' => '1')); 

如果需要,您可以調整此設置以擁有2個單獨的操作。

+0

不,我不想在控制器中編寫代碼。 – Gcaufy

+0

我可以得到數據提供者和列,爲什麼我需要在控制器中編寫代碼?我找到了一種方法來做這個代碼。我覆蓋了CGridView的運行功能,然後我把PDF和Excel代碼放在裏面。那麼在cotroller中沒有代碼,這意味着如果其他人使用此代碼,那麼他不需要在控制器中編寫代碼來導出。無論如何感謝您的回覆。 – Gcaufy

相關問題