Обновление CGridView

Хелло всем!

У меня есть jsTree :


<? $this->Widget('application.extensions.jsTree.CjsTree', array(

  'data'=>$folders,

  'ui'=>array('theme_name'=>'default'),

  'id'=>'folders',

  'rules'=>array(

    'droppable' => "tree-drop",

    'multiple' => true,

    'deletable' => "all",

    'draggable' => "all" 

  ),

  'callback'=>array(

.....

    "ondblclk"=>"js:function(NODE, TREE_OBJ) { refreshFilesGrid(NODE); }",

.....

  ),

)); ?>

А также GridView :


<?

$this->widget('zii.widgets.grid.CGridView', array(

    'id'=>'files-grid',

    'dataProvider'=>$files,

    'ajaxUpdate'=>true,

    'columns'=>array(

        array(

            'name'=>Yii::t('main', 'File name'),

            'value'=>'$data->name',

        ),

        array(

            'name'=>Yii::t('main', 'Date'),

            'value'=>'date("d-m-Y H:i:s", $data->uploaded)',

        ),

        array(

          'class'=>'CButtonColumn',

          'buttons'=>array(

            'update'=>array(

              'visible'=>'false'

              )

            )

        ),

    ),

));

?>

И еще функция refreshFilesGrid :


<script type="text/javascript">

  function refreshFilesGrid(node)

  {

// Здесь вылазит яваскриптовская ошибка: "$.param.querystring is not a function".

    $.fn.yiiGridView.update('files-grid', {

      type:'POST',

      url: 'ajax/getfiles/?folder_id'+node.id,

      success:function() {

       $.fn.yiiGridView.update('files-grid');

      }

    });

  }

</script>

Когда я даблкликаю на ноде дерева, необходимо чтобы gridview обновлялся. Как сие можно сделать?

Спасибо.

Пытался решить проблему цеплянием click-события на все ссылки в дереве :


Yii::app()->clientScript->registerScript('xxx', "

$(\"a[href='#']\").click(function() {

  $.fn.yiiGridView.update('files-grid', {

    type:'POST',

    url:'/ajax/test',

    success:function() {

      $.fn.yiiGridView.update('files-grid');

    },

    failure:function() {

      alert('error');

    }

  });

  return false;

});

");

…но все также вылазит ошибка ‘$.param.querystring is not a function’ :(

Ап.

Решилась проблема?

Для тех, кто столкнулся с подобной проблемой.

В первую очередь проверьте, не подключаете ли вы jquery.js дважды (автоматическая генерация + ручками, например) – для меня это решило проблему.

Если не помогло, также проверьте верный порядок подключения скриптов: jquery, jquery.ba-bbq.js, jquery.yiigridview.js

Надеюсь, пригодится :)

Да! Решилась проблема?

Подскажите вот эта функция


$.fn.yiiGridView.update('files-grid');

что делает??

Что означает обновление CGridView. Меня интересует возможность перерисовывать CGridView при помощи AJAX, чтоб не перерисовывать всю страницу. Тут речь идёт об этой возможности? В частности нужно чтобы по нажатии кнопки менялись данные и Grid перерисовывал сам себя.

$.fn.yiiGridView.update – функцию можно рассмотреть в файле jquery.yiigridview.js

Обновление CGridView:

Посмотрите CButtonColumn

Вы можете использовать:


'click'=>'js:function(){alert("hi")}'

Также, в CGridView обратите внимание на свойства – возможно, то, что вам надо.

Надеюсь, то, что искали.

Yii использует http://jquery.bassistance.de/treeview/demo/async.html

там есть пример обновления дерева. (Ctrl-U)

function initTrees() {


	&#036;(&quot;#black&quot;).treeview({


		url: &quot;source.php&quot;


	})


	


	&#036;(&quot;#mixed&quot;).treeview({


		url: &quot;source.php&quot;,


		// add some additional, dynamic data and request with POST


		ajax: {


			data: {


				&quot;additional&quot;: function() {


					return &quot;yeah: &quot; + new Date;


				}


			},


			type: &quot;post&quot;


		}


	});


}


&#036;(document).ready(function(){


	initTrees();


	&#036;(&quot;#refresh&quot;).click(function() {


		&#036;(&quot;#black&quot;).empty();


		&#036;(&quot;#mixed&quot;).empty();


		initTrees();


	});


});