2014-02-11 2 views
0

아주 명확한 해결 방법이 없으면 골치 아픈 시나리오에 직면하게됩니다. 문제는 제품 정보와 5d, 6m, 12m에 대한 투자 수익을 보여주는 gridview와 총 수익률이라고하는 다른 열이 있다는 것입니다. 이 총 수익률 % 열은 각 달마다 개별적으로 계산되며 데이터베이스의 별도 열에 저장됩니다.Yii Gridview Ajax를 사용하여 열 값 변경

이제 총 수익률이라는이 열을 만드는 방법은 사용자가 현재 정렬중인 월의 정보를 표시하는 것입니다. 따라서 사용자가 5d ROI 열을 기준으로 정렬하면 총 수익률이 5 %로 다시 계산됩니다. 사용자가 6m ROI 열에서 정렬하면 총 수익률은 다시 6m으로 다시 계산됩니다. 나는 사용자가 ROI 열을 정렬하는 것을 제외하고 모든 월의 총 수익률 열에 대해 false로 "visible"속성을 설정하여이 작업을 수행하는 방법을 찾으려고했지만 그 값은 작동하지 않습니다. 모든.

여기에있는 gridview입니다.

$this->widget('bootstrap.widgets.TbGridView', array(
    'id' => 'product-news-grid-'. $id, 
    'itemsCssClass' => 'table table-striped', 
    'htmlOptions' => array(
     'class' => 'news-datagrid', 
    ), 
    'dataProvider' => $dataProvider->searchProductNewsSymbol($name, $headlines, $publish_date), 
    'filter' => $dataProvider, 
    'enableHistory' => false, 
    'ajaxUpdate' => 'product-news-grid-'. $id, 
    'ajaxUrl' => Yii::app()->createUrl('/productDetails/AjaxUpdateProductNews'), 
    'pager' => array(
     'header' => '', 
     'cssFile' => false, 
     'maxButtonCount' => 5, 
     'selectedPageCssClass' => 'active', 
     'hiddenPageCssClass' => 'disabled', 
     'firstPageCssClass' => 'previous', 
     'lastPageCssClass' => 'next', 
     'firstPageLabel' => '<<', 
     'lastPageLabel' => '>>', 
     'prevPageLabel' => '<', 
     'nextPageLabel' => '>', 
    ), 
    'summaryCssClass' => 'label label-warning', 
    'columns' => array(
     array(
      'name' => 'name', 
      'header' => 'Name', 
      'value' => function($data) { 
       return '<div class="product-name"> <a target="_blank" href="'. $data->id .'" > '. $data->name .'</a></div>'; 
      }, 
      'type' => 'raw', 
     ), 
     array(
      'name' => 'headlines', 
      'header' => 'Headlines', 
      'value' => function($data) { 
       return '<div class="product-news"> <a target="_blank" href="'. $data->link .'" > '. $data->headlines .'</a></div>'; 
      }, 
      'type' => 'raw', 
     ), 
     array(
      'name' => 'publish_date', 
      'header' => 'Date', 
      'value' => function($data) { 
       return '<span class="news-pub-date">'. $data->publish_date .'</span>'; 
      }, 
      'type' => 'raw', 
     ), 
     array(
      'name' => 'fived_roi', 
      'header' => '5d ROI', 
      'value' => function($data) { 
       return '<span class="news-pub-date">'. $data->fived_roi .'</span>'; 
      }, 
      'type' => 'raw', 
     ), 
     array(
      'name' => 'sixm_roi', 
      'header' => '6m ROI', 
      'value' => function($data) { 
       return '<span class="news-pub-date">'. $data->sixm_roi .'</span>'; 
      }, 
      'type' => 'raw', 
     ), 
      array(
      'name' => 'twlm_roi', 
      'header' => '12m ROI', 
      'value' => function($data) { 
       return '<span class="news-pub-date">'. $data->twlm_roi .'</span>'; 
      }, 
      'type' => 'raw', 
     ), 
     array(
      'name' => 'fived_profit', 
      'header' => 'Total Profit %', 
      'value' => function($data) { 
       return '<span class="news-pub-date">'. $data->fived_profit .'%</span>'; 
      }, 
      'type' => 'raw', 
     ), 
     array(
      'name' => 'sixm_profit', 
      'header' => 'Total Profit %', 
      'value' => function($data) { 
       return '<span class="news-pub-date">'. $data->sixm_profit .'%</span>'; 
      }, 
      'type' => 'raw', 
      'visible' => false 
     ), 
     array(
      'name' => 'twlm_profit', 
      'header' => 'Total Profit %', 
      'value' => function($data) { 
       return '<span class="news-pub-date">'. $data->twlm_profit .'%</span>'; 
      }, 
      'type' => 'raw', 
      'visible' => true 
     ), 


    ) 
)); 

?> 

나는 테이블 열 머리글에 클릭 처리기를 부착하고, 눈에 보이는 총 수익 % 열 사람이있는 다른보기를 렌더링함으로써이 작품을 만들기 위해 노력했다. 그러나 작동하지 않으면 분류가 작동하지 않고 전체 격자가 다른 격자를 렌더링 한 후에 분리됩니다.

아무도 올바른 방향으로 원하는 결과를 얻는 방법을 알려줄 수는 없습니다. 나는 어떤 도움을 주셔서 감사합니다.

덕분에, 맥스

편집

가 여기에 귀하의 버튼 클릭에 searchProductNewsSymbol의 코드()

public function searchProductNewsSymbol ($name , 
              $headlines = NULL , 
              $publish_date = NULL) { 

     // @todo Please modify the following code to remove attributes that should not be searched. 

     $criteria = new CDbCriteria ; 


     $criteria->select = 'name, publish_timestamp, publish_date, headlines, link, last_updated'; 
     $criteria->group = 'headlines'; 
     $criteria->compare ('name' , 
          $name , 
          true) ; 

     if (isset ($headlines) || $headlines != "") { 
      $criteria->compare ('headlines' , 
           $headlines , 
           TRUE , 
           'AND') ; 
     } 

     if (isset ($publish_date) || $publish_date != "") { 
      $criteria->compare ('publish_date' , 
           $publish_date , 
           TRUE , 
           'AND') ; 
     } 
     return new CActiveDataProvider ($this , 
             array (
           'criteria' => $criteria , 
           'sort'  => array (
                  'defaultOrder' => 'publish_date desc' , 
           ) , 
       )) ; 
    } 
+0

데이터베이스 테이블의 구조를 게시하십시오. –

+0

여기에서 솔루션을 확인하십시오. http://stackoverflow.com/questions/12292784/yii-how-to-ajax-update-the-cgridview – dev1234

+0

@jailedabroad 잘 스키마는 게시물에 지정된 열과 동일합니다 – Maxx

답변

0

이며,이 일을하려고합니다.

$.fn.yiiGridView.update("<id of CGridView>"); 
+0

예. 그리드 만 새로 고칩니다. 열 정렬은 여전히 ​​작동하지 않습니다. – Maxx

+0

searchProductNewsSymbol() 메소드에 대한 코드를 게시 할 수 있습니까? – dev1234

+0

확실히 위의 내 게시물을 확인하십시오 – Maxx