Yii Framework Forum: Bardzo dziwne zachowanie ajaxLink w CGridView - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Bardzo dziwne zachowanie ajaxLink w CGridView Rate Topic: -----

#1 User is offline   Deimos 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 18
  • Joined: 27-July 10

Posted 09 August 2010 - 11:08 AM

Na stronie mam zawartośc która jest renderowana przez określone widoki za pomocą ajaxLinków umieszczonych w CTreeView. ajaxLinki uruchamiają metode UpdateAjax. Wszystko działa poprawnie. W jednym 'pudełku' ładowanej zawartości znajduje się tabela CGridView. W jednej z jej kolumn umieściłem ajaxLinki, które po kliknięciu powinny zmieniać zawarośc diva poniżej za pomocą metody UpdateDiv. Gdy klikam w któregokolwiek linka z tabeli zmienia się główna zawartość zamiast diva, tak jakby uruchamiana była metoda UpdateAjax a nie UpdateDiv. Z tego co zaobserwowałem div zmienia się na ułamek sekundy poczym zmienia się główna zawartość i to o jakieś "losowo" wybrane widoki..??

UpdateAjax
public function actionUpdateAjax()
    {
        if(Yii::app()->request->isAjaxRequest && isset($_GET['idJednostki']))
        {
                $data = array();
                $id = $_GET['idJednostki'];
                
                $data['dInformacje'] = Jednostki::model()->findByPk($id);
                
                        
                $this->renderPartial('_ajaxContent', $data, false, true);
                
        }
    }


UpdateDiv
public function actionUpdateDiv(){
                if(Yii::app()->request->isAjaxRequest && isset($_GET['strId'])){
                        
                        $data['dStr'] = Str::model()->findByPk($_GET['strId']);
                        
                        $this->renderPartial('_strInfo',$data,false,true);
                }
        }


Głowny widok
<div id="content-jednostki">

        <?php echo $this->renderPartial('_ajaxContent',array(
                                'dInformacje'=>$dInformacje,
                        )); 
        ?>
</div>

Widok z CGridView

<div id="table">
<?php 

$this->widget('zii.widgets.grid.CGridView', array(
        'id'=>'u-grid',
        'dataProvider'=>$dInformacje,
        'filter'=>new Informacje,
        'columns'=>array(
                'id',
                'name',
                'field',
                array(
                    'class'=>'myAjaxLinkColumn',
                ),
           
                
        ),
)); 

?>

</div>
<div class="str-info" >
<?php 
        
        $this->renderPartial('_strInfo');
)); ?>
</div>


Do wyrenderowania ajax linków posłużyłem się klasą:
class myAjaxLinkColumn extends CLinkColumn
{

        protected function renderDataCellContent($row,$data)
        {
                
            echo CHtml::ajaxLink('view', Yii::app()->getUrlManager()->createUrl('sis/UpdateDiv'), array('data'=>array('strId'=>'7'), 'update'=>'.str-info'));
        }
}


Próbowałem jeszcze z CButtonColumn. Efekt ten sam. Dlaczego uruchamia metode AjaxUpdate. Dzieje się tak nawet jak kompletnie usunę metodę UpdateDiv.
Pomocy, już dzień zmarnowałem żeby to rozwiązać i nic.


Temat rozwiązany, ta sama sytuacja co w poście poprzednim (http://www.yiiframew...nie-zawartosci/), ajax nie renderował obsługi zdarzenia do nowego ajaxLinka.
Rozwiązanie gadd33 z postu poprzedniego idealnie załatwiło sprawę. Temat zamknięty

This post has been edited by Deimos: 09 August 2010 - 11:47 AM

0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users