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.yiiframework.com/forum/index.php?/topic/10953-ajax-ladowanie-zawartosci/), ajax nie renderował obsługi zdarzenia do nowego ajaxLinka.
Rozwiązanie gadd33 z postu poprzedniego idealnie załatwiło sprawę. Temat zamknięty