Добрый день, коллеги.)
У меня есть таблица, в таблице есть кнопки CButtonColumn, мои собственные, не стандартные.
При нажатии на кнопку открывается модальное окно с формой. Нужно скрытое поле формы заполнять идентификатором строки таблицы.
На onclick повесил js. Не могу понять, как бы мне в этот js передавать id-ник каждой строки из php.
Можно конечно переписать базовый класс и в нём воспользоваться evaluateExpression, но возможно есть другое решение?
Передавать в js CButtonColumn переменную Php
- Neuromance
- Сообщения: 716
- Зарегистрирован: 2011.09.06, 13:04
Re: Передавать в js CButtonColumn переменную Php
"id-ник каждой строки" это что? даже ничего не передавая уже в js можно через this узнать все о нажатой кнопке и текущей строке
- Neuromance
- Сообщения: 716
- Зарегистрирован: 2011.09.06, 13:04
Re: Передавать в js CButtonColumn переменную Php
это любое значение массива данных, из которого формируется таблица, которое можно принять за уникальный идентификатор строки.
- Neuromance
- Сообщения: 716
- Зарегистрирован: 2011.09.06, 13:04
Re: Передавать в js CButtonColumn переменную Php
Это только в том случае, если в таблице присутствует нужное нам значение.yan писал(а):"даже ничего не передавая уже в js можно через this узнать все о нажатой кнопке и текущей строке
У меня же в таблице информация об id записи не присутствует. Её не нужно показывать пользователям
Re: Передавать в js CButtonColumn переменную Php
можно поискать как это ид-строки в параметр id тэга строки или ячейки или кнопки запихать и в js доставать, но сходу не скажу как
- Neuromance
- Сообщения: 716
- Зарегистрирован: 2011.09.06, 13:04
Re: Передавать в js CButtonColumn переменную Php
Решил проблему. Расскажу как, вдруг кому-то пригодится.
Есть класс RCButtonColumn, унаследованный от CButtonColumn.
В нём переопределил метод renderButton
Вызывается так
Таким образом я могу заполнять html-аттрибуты моей кнопки чем-угодно, а при нажатии на неё получать их
Есть класс RCButtonColumn, унаследованный от CButtonColumn.
В нём переопределил метод renderButton
Код: Выделить всё
protected function renderButton($id,$button,$row,$data){
if(isset($button['optionsExpression'])){
$optionsExpression = $button['optionsExpression'];
if(is_array($optionsExpression)){
foreach($optionsExpression as $optionName=>$optionExpr){
$button['options'][$optionName] = $this->evaluateExpression($optionExpr,array('data'=>$data,'row'=>$row));
}
}
}
parent::renderButton($id,$button,$row,$data);
}
Код: Выделить всё
'columns'=>array(
array('name'=>'AM', 'header'=>'ФИО'),
array('name'=>'AD', 'header'=>'Адрес'),
array('name'=>'ACCKRD_PAYDATE','header'=>'Дата платежа'),
array(
'class'=>'RCButtonColumn',
'template'=>'{storno}',
'buttons'=>array(
'storno' => array(
'label'=>'Сторно',
'url'=>'"#"',
'optionsExpression'=>array(
'tag'=>'$data["ACCKRD_ID"]',
),
'click'=>'function(){
alert($(this).attr("tag"));
$("#stornokrd").dialog("open");
}',
),
),
),
),
Re: Передавать в js CButtonColumn переменную Php
компоненты плодить тоже не всегда хорошо, как вариант можно ручками ячейку создать используя CDataColumn