如何将事件绑定到我的gridview代码(从CGridView扩展)

时间:2012-10-19 12:30:03

标签: yii

我写了一个类MyGridView,从CGridView扩展 MyGridView将自动在标题中生成两个按钮, 一个是pdf图标,另一个是excel图标。但是如何将事件绑定到这两个图标? 这样我就可以根据数据提供者和列使用我的代码为这个CGridView生成PDF或EXCEL。

PDF导出代码和EXCEL导出代码都准备就绪,我只是不知道如何为类绑定服务器端事件

1 个答案:

答案 0 :(得分:0)

这很大程度上取决于生成PDF和EXCEL文件的代码,有几种方法可以“绑定”这些按钮来生成文件。

  1. 在首先渲染网格视图的同一操作中
  2. 使用生成CDataProvider的相同代码库的不同操作。
  3. 对于第一种情况,您可以将参数传递给告诉它生成相应文件的操作:

    <?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个单独的操作。