2015-06-09 2 views
0

Я хочу открыть CJuiModel, нажав на CGridView CButtonColumn вид кнопки, как мой CGridView и CJuiModel является таким, как: -Ajax запрос не работает После CGridView Update

 <?php 
       $dataProvider = new CArrayDataProvider($model->exhibitorLocation, array(
        'keys' => array('productId'), 
       )); 


       $this->widget('zii.widgets.grid.CGridView', array(
        'dataProvider' => $dataProvider, 
        'id' => 'exhibitor-location-grid', 
        'summaryText' => false, 
        'pager' => array(
         'class' => 'CLinkPager', 
         'header' => false, 
        ), 
        'columns' => array(
         array(
          'header' => 'S No.', 
          'value' => '++$row', 
         ), 
         array(
          'header' => 'Hall No', 
          'value' => '$data->location->hallNo', 
         ), 
         array(
          'header' => 'Stand No', 
          'value' => '$data->standNo', 
         ), 
         array(
          'class' => 'CButtonColumn', 
          'header' => 'Manage', 
          'template' => '{view}{delete}', 
          'buttons' => array(
           'view' => array(
            'imageUrl' => $this->module->assetsUrl . "/images/info_icon.png", 
            'options' => array('class' => 'exb-location'), 
            'url' => 'Yii::app()->createUrl("admin/venuemap/viewExbLocation", array("exbLocId"=>$data->primaryKey))', 
           ), 
           'delete' => array(
            'imageUrl' => $this->module->assetsUrl . "/images/delete_icon.png", 
            'url' => 'Yii::app()->createUrl("admin/venuemap/deleteExbLocation", array("exbLocId"=>$data->primaryKey))', 
           ), 
          ), 
          'htmlOptions' => array(
           'style' => 'width:100px;float:center' 
          ) 
         ), 
        ), 
        'rowCssClassExpression' => '($row%2 ? "visit2" : "visit1")', 
        'itemsCssClass' => 'visitor_list', 
        'htmlOptions' => array(
        ) 
       )); 
       ?> 
       <div class="name_field">Hall No<span>*</span></div> 
       <?php echo CHtml::dropDownList('hall-no', '', CHtml::listData(Venuemap::model()->findAll(), 'locationId', 'hallNo'), array('class' => 'name_input2', 'id' => 'hall-no')); ?> 

       <div class="name_field">Stand No</div> 
    <?php echo CHtml::textField('Stand No', '', array('class' => 'name_input', 'id' => 'stand-no')); ?> 

       <?php 
       echo CHtml::ajaxLink("Add Location", Yii::app()->createUrl('admin/venuemap/addExbLocation'), array(
        'type' => 'post', 
        'data' => array(
         'exhibitorId' => $model->exhibitorId, 
         'standNo' => 'js: $("#stand-no").val()', 
         'locationId' => 'js: $("#hall-no").val()' 
        ), 
        'success' => 'function(html){ $.fn.yiiGridView.update("exhibitor-location-grid"); }' 
         ), array('class' => 'search_btn')); 
       ?> 

       <?php 
        $this->beginWidget('zii.widgets.jui.CJuiDialog', array(
         'id' => 'location-dialog', 
         'options' => array(
          'title' => 'View Location', 
          'autoOpen' => false, 
          'modal' => true, 
          'width' => 'auto', 
          'height' => 'auto', 
          'resizable' => false 
         ), 
        )); 
        $this->endWidget(); 
        ?> 

    <?php 

    Yii::app()->clientScript->registerScript('view-location-ajax', " 


    $('.exb-location').click(function(){ 
     url=$(this).attr('href'); 
     $.ajax({ 
     type: 'post', 
     url: url, 
     success: function(result){ 
      $('#location-dialog').html(result).dialog('open'); 
      $('#draggable').draggable(); 
      return false; 
     } 
    }); 
     return false; 
    }); 


    "); 
    ?> 

View Кнопка работает нормально и открыть CJuiModel на но при добавлении нового местоположения в CGridView. При нажатии на кнопку просмотра мой CJuiModel не открывается, а страница перенаправляется на Url.Why мой jquery не удалось обновить CGridView. Помощь ..

+0

Вы должны проверить тип отправки данных, как сообщение или получить может быть, это конфликт. –

+0

type: 'post', уже упомянутый в моем ClientScript –

+0

сделать один из них получить тип из обоих может быть этим разрешить конфликт –

ответ

0

Изменение Ajax вызова с помощью JQuery 'на' вместо прямого связывания события:

Это:

... 

$('.exb-location').click(function(){ 
... 

Изменить для:

... 

$('.exb-location').on('click', '.exb-location', function(){ 
... 

Html элементов разрушаются и регенерируют после Обновление CGridview. Прямые события JQuery работают только с существующими элементами перед загрузкой DOM. Когда они удаляются или новые элементы добавляются позже, direct events don't work.

Смежные вопросы