CGridView событие при клике на строку таблицы

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
p0rsche
Сообщения: 192
Зарегистрирован: 2012.01.18, 08:28
Контактная информация:

CGridView событие при клике на строку таблицы

Сообщение p0rsche »

Доброго времени суток.
Можно ли штатными средствами в CGridView получить событие клика по строке? К примеру, при клике возникает событие, куда передается вся информация о строке (все значения columns и пр.).

Пока что решением вижу тупое навешивание обработчиков кликов и затем их отпарсивание вручную на jquery.
p0rsche
Сообщения: 192
Зарегистрирован: 2012.01.18, 08:28
Контактная информация:

Re: CGridView событие при клике на строку таблицы

Сообщение p0rsche »

Благодарствую, сам проморгал чего-то...
TM123
Сообщения: 608
Зарегистрирован: 2011.06.09, 11:18

Re: CGridView событие при клике на строку таблицы

Сообщение TM123 »

Кстати вопрос в тему.

Я так и не понимаю до сих пор, почему в стандартном CGridView не сделана на мой взгляд уже стандартная функция, по клику на строку открывается запись, так делают практически все и скорее правильно было бы чтобы эта функция отключалась, чем через описанный способ делать перехват и ...
yuvrik
Сообщения: 3
Зарегистрирован: 2012.03.31, 19:08

Re: CGridView событие при клике на строку таблицы

Сообщение yuvrik »

Доброго времени суток. Подскажите уже несколько дней парюсь. Получил значение id выбранной записи, а дальше как остальные значения выделенной строки получать из CGridView?

Код: Выделить всё

.................
  ),
  'selectionChanged'=>'js:function(id) 
  {
    document.getElementById("id_place").value = $.fn.yiiGridView.getSelection(id);
    $("#mydialog").dialog("close");
  }'
)); 
.................
 
p0rsche
Сообщения: 192
Зарегистрирован: 2012.01.18, 08:28
Контактная информация:

Re: CGridView событие при клике на строку таблицы

Сообщение p0rsche »

yuvrik писал(а):Доброго времени суток. Подскажите уже несколько дней парюсь. Получил значение id выбранной записи, а дальше как остальные значения выделенной строки получать из CGridView?

Код: Выделить всё

.................
  ),
  'selectionChanged'=>'js:function(id) 
  {
    document.getElementById("id_place").value = $.fn.yiiGridView.getSelection(id);
    $("#mydialog").dialog("close");
  }'
)); 
.................
 
Нужно руками через JS\jQuery. Yii не предоставляет информацию через встроенные функции.

P.S. document.getElementById("id_place").value => $('#id_place').val($.fn.yiiGridView.getSelection(id));
yuvrik
Сообщения: 3
Зарегистрирован: 2012.03.31, 19:08

Re: CGridView событие при клике на строку таблицы

Сообщение yuvrik »

p0rsche писал(а): Нужно руками через JS\jQuery. Yii не предоставляет информацию через встроенные функции.

P.S. document.getElementById("id_place").value => $('#id_place').val($.fn.yiiGridView.getSelection(id));
Спасибо за поправку...
А не приведете небольшой примерчик как это можно сделать? Всю голову сломал...

Код: Выделить всё

  $this->widget('zii.widgets.grid.CGridView', array(
  'id'=>'place-grid',
  'dataProvider'=>$dataProvider,
  'filter'=>$model,
  'columns'=>array(
    //'id',    
    'location',
    'address',
    array('name' => 'idCity_name',
          'header' => 'Город',
          'value' => '$data->idCity->name',
    ),
  ),
  'selectionChanged'=>'js:function(id) 
  {
    $("#id_place").val($.fn.yiiGridView.getSelection(id));
    $("#mydialog").dialog("close");
  }'
)); 
 
Как задумывалось, при клике на строку диалоговое окно закрывается, в скрытое поле пишется айдишник, а текстовые поля заполняются записями из GridView. Подскажите плиз как это можно сделать... $("#place_location").val(???);
esche
Сообщения: 1054
Зарегистрирован: 2010.11.24, 03:39

Re: CGridView событие при клике на строку таблицы

Сообщение esche »

У "кликнутой" строки класс добавляется 'tr.selected'.. Используя JQuery перебрать все дочерние td-шки..
...
yuvrik
Сообщения: 3
Зарегистрирован: 2012.03.31, 19:08

Re: CGridView событие при клике на строку таблицы

Сообщение yuvrik »

esche писал(а):У "кликнутой" строки класс добавляется 'tr.selected'.. Используя JQuery перебрать все дочерние td-шки..
Огромное спасибо! Все получилось

Код: Выделить всё

  'selectionChanged'=>'js:function(id) 
  {
    $("#id_place").val($.fn.yiiGridView.getSelection(id));
    var select_val = $(".selected");
    $("#place_location").val(select_val.find("td").eq(0).text());    
    $("#place_address").val(select_val.find("td").eq(1).text()+" ("+select_val.find("td").eq(2).text()+")");    
    $("#mydialog").dialog("close");
  }'
 
Ответить