CCheckBoxColumn
| Пакет | zii.widgets.grid |
|---|---|
| Наследование | класс CCheckBoxColumn » CGridColumn » CComponent |
| С | 1.1 |
| Исходный код | framework/zii/widgets/grid/CCheckBoxColumn.php |
CCheckBoxColumn поддерживает отсутствие выбора (только для чтения), одиночный выбор и множественный выбор. Режим определяется по selectableRows. В режиме множественного выбора заголовок ячейки будет содержать дополнительное поле для выбора, щелчок по которому установит или сбросит флажки во всех ячейках данных. Ячейку заголовка можно настроить с помощью headerTemplate.
Кроме того, выбор ячейки может выбрать строку в гриде (в зависимости от CGridView::selectableRows) если selectableRows равно null (по умолчанию).
По умолчанию, поля для выбора в ячейках данных будут иметь значения, совпадающие с ключами модели данных. Это можно изменить, задав name или value.
Общественные свойства
| Свойство | Тип | Описание | Определено |
|---|---|---|---|
| checkBoxHtmlOptions | массив | HTML-опции для полей для выбора. | CCheckBoxColumn |
| checked | строка | PHP-выражение, которое будет вычислено для каждой ячейки данных и результат которого определит, будет ли поле для выбора в каждой ячейке данных отмечено. | CCheckBoxColumn |
| cssClassExpression | строка | PHP-выражение, которое вычисляется для каждой ячейки данных и результат которого используется в качестве имени класса CSS для ячейки данных. | CGridColumn |
| disabled | строка | PHP-выражение, которое будет вычислено для каждой ячейки данных и результат которого определит, будет ли поле для выбора в каждой ячейке данных отключено. | CCheckBoxColumn |
| filterCellContent | строка | Возвращает содержимое ячейки фильтра. | CGridColumn |
| filterHtmlOptions | массив | HTML-опции для тега ячейки фильтра. | CGridColumn |
| footer | строка | Текст ячейки подвала. | CGridColumn |
| footerCellContent | строка | Возвращает содержимое ячейки подвала. | CGridColumn |
| footerHtmlOptions | массив | HTML-опции для тега ячейки подвала. | CCheckBoxColumn |
| grid | CGridView | Объект представления грида, владеющий этим столбцом. | CGridColumn |
| hasFooter | boolean | Указывает, содержит ли этот столбец ячейку подвала. | CGridColumn |
| header | строка | Текст ячейки заголовка. | CGridColumn |
| headerCellContent | строка | Возвращает содержимое ячейки заголовка. | CCheckBoxColumn |
| headerHtmlOptions | массив | HTML-опции для тега ячейки заголовка. | CCheckBoxColumn |
| headerTemplate | строка | Шаблон для управления представлением ячейки заголовка. | CCheckBoxColumn |
| htmlOptions | массив | HTML-опции для тегов ячеек данных. | CCheckBoxColumn |
| id | строка | Идентификатор этого столбца. | CGridColumn |
| name | строка | Имя атрибута модели данных. | CCheckBoxColumn |
| selectableRows | целое число | Количество строк, которые могут быть выбраны. | CCheckBoxColumn |
| value | строка | PHP-выражение, которое будет вычислено для каждой ячейки данных, и результат которого будет отображен в каждой ячейке данных как значение поля для выбора. | CCheckBoxColumn |
| visible | boolean | Указывает, виден ли этот столбец. | CGridColumn |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод с заданным именем, который не является методом класса. | CComponent |
| __construct() | Конструктор. | CGridColumn |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение по имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в значение null. | CComponent |
| asa() | Возвращает объект поведения с заданным именем. | CComponent |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | CComponent |
| attachEventHandler() | Прикрепляет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли считать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| detachBehavior() | Открепляет поведение от компонента. | CComponent |
| detachBehaviors() | Открепляет все поведения от компонента. | CComponent |
| detachEventHandler() | Открепляет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает присоединённое поведение. | CComponent |
| disableBehaviors() | Отключает все присоединенные поведения к этому компоненту. | CComponent |
| enableBehavior() | Включает прикрепленное поведение. | CComponent |
| enableBehaviors() | Включает все прикрепленные к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP выражение или обратный вызов в контексте этого компонента. | CComponent |
| getDataCellContent() | Возвращает содержимое ячейки данных. | CCheckBoxColumn |
| getEventHandlers() | Возвращает список присоединённых обработчиков событий для события. | CComponent |
| getFilterCellContent() | Возвращает содержимое ячейки фильтра. | CGridColumn |
| getFooterCellContent() | Возвращает содержимое ячейки подвала. | CGridColumn |
| getHasFooter() | Возвращает, имеет ли этот столбец ячейку подвала. Это определяется на основе того, задан ли footer. | CGridColumn |
| getHeaderCellContent() | Возвращает содержимое ячейки заголовка. | CCheckBoxColumn |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли присоединенные обработчики для указанного события. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует столбец. | CCheckBoxColumn |
| raiseEvent() | Вызывает событие. | CComponent |
| renderDataCell() | Отображает ячейку данных. | CGridColumn |
| renderFilterCell() | Отображает ячейку фильтра. | CGridColumn |
| renderFooterCell() | Отображает ячейку подвала. | CGridColumn |
| renderHeaderCell() | Отображает ячейку заголовка. | CGridColumn |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| renderDataCellContent() | Отображает содержимое ячейки данных. | CGridColumn |
| renderFilterCellContent() | Отображает содержимое ячейки фильтра. | CGridColumn |
| renderFooterCellContent() | Отображает содержимое ячейки подвала. | CGridColumn |
| renderHeaderCellContent() | Отображает содержимое ячейки заголовка. | CGridColumn |
Подробности свойств
checkBoxHtmlOptions свойство
public array $checkBoxHtmlOptions;
параметры HTML для чекбоксов.
checked свойство (доступно с версии v1.1.4)
public string $checked;
PHP выражение, которое будет вычисляться для каждой ячейки данных, и результат которого определит, установлен ли флажок для каждой ячейки данных. В этом выражении вы можете использовать следующие переменные:
-
$rowномер строки (нумерация с нуля) -
$dataмодель данных для строки -
$thisобъект столбца
PHP выражение может быть любым PHP кодом, который имеет значение. Чтобы узнать больше о том, что такое выражение, обратитесь к руководству php.
disabled свойство (доступно с версии v1.1.13)
public string $disabled;
PHP выражение, которое будет вычисляться для каждой ячейки данных, и результат которого определит, отключен ли флажок для каждой ячейки данных. В этом выражении вы можете использовать следующие переменные:
-
$rowномер строки (нумерация с нуля) -
$dataмодель данных для строки -
$thisобъект столбца
PHP выражение может быть любым PHP кодом, который имеет значение. Чтобы узнать больше о том, что такое выражение, обратитесь к руководству php.
Обратите внимание, что результат выражения перепишет значение, установленное с помощью
checkBoxHtmlOptions['disabled']. footerHtmlOptions свойство
public array $footerHtmlOptions;
параметры HTML для тега ячейки подвала.
headerCellContent свойство только для чтения (доступно с версии v1.1.16)
public string getHeaderCellContent()
Возвращает содержимое ячейки заголовка. Этот метод отобразит флажок в заголовке, когда selectableRows больше 1 или в случае, когда selectableRows равно null, а CGridView::selectableRows больше 1.
headerHtmlOptions свойство
public array $headerHtmlOptions;
параметры HTML для тега ячейки заголовка.
headerTemplate свойство (доступно начиная с v1.1.11)
public string $headerTemplate;
шаблон, используемый для управления представлением ячейки заголовка. Токен "{item}" распознаётся и заменяется на чекбокс «Выбрать все». По умолчанию, в режиме множественного выбора, ячейка заголовка отображает дополнительный чекбокс, нажатие на который устанавливает или снимает отметку со всех чекбоксов в ячейках данных. Подробнее см. selectableRows.
htmlOptions свойство
public array $htmlOptions;
HTML-параметры тегов ячейки данных.
name свойство
public string $name;
имя атрибута модели данных. Соответствующее значение атрибута будет отображаться в каждой ячейке данных как значение чекбокса. Обратите внимание, что если указано value, это свойство будет проигнорировано.
См. также
selectableRows свойство (доступно начиная с v1.1.6)
public integer $selectableRows;
количество строк, которые могут быть выбраны. Возможные значения:
- 0 — состояние чекбокса нельзя изменить (только чтение)
- 1 — может быть выбрана только одна строка. Установка отметки в чекбоксе не влияет на выбор строки
- 2 или более — можно выбрать несколько чекбоксов. Установка отметки в чекбоксе не влияет на выбор строки
- null — используется CGridView::selectableRows для управления количеством выбираемых чекбоксов. Установка отметки в чекбоксе также выберет строку.
$(gridID).yiiGridView('getChecked', columnID) для получения значений ключей выбранных строк. value свойство
public string $value;
PHP-выражение, которое будет вычислено для каждой ячейки данных, и результат которого будет отображен в каждой ячейке данных как значение чекбокса. В этом выражении вы можете использовать следующие переменные:
-
$rowномер строки (нумерация с нуля) -
$dataмодель данных для строки -
$thisобъект столбца
PHP-выражение может быть любым PHP-кодом, имеющим значение. Чтобы узнать больше о том, что такое выражение, пожалуйста, обратитесь к руководству по PHP.
Подробное описание методов
getDataCellContent() метод (доступен начиная с v1.1.16)
public string getDataCellContent(integer $row) | ||
| $row | целое число | номер строки (нумерация с нуля) |
| {return} | строка | содержимое ячейки данных. |
public function getDataCellContent($row)
{
$data=$this->grid->dataProvider->data[$row];
if($this->value!==null)
$value=$this->evaluateExpression($this->value,array('data'=>$data,'row'=>$row));
elseif($this->name!==null)
$value=CHtml::value($data,$this->name);
else
$value=$this->grid->dataProvider->keys[$row];
$checked = false;
if($this->checked!==null)
$checked=$this->evaluateExpression($this->checked,array('data'=>$data,'row'=>$row));
$options=$this->checkBoxHtmlOptions;
if($this->disabled!==null)
$options['disabled']=$this->evaluateExpression($this->disabled,array('data'=>$data,'row'=>$row));
$name=$options['name'];
unset($options['name']);
$options['value']=$value;
$options['id']=$this->id.'_'.$row;
return CHtml::checkBox($name,$checked,$options);
}
Возвращает содержимое ячейки данных. Данный метод отображает чекбокс в ячейке данных.
getHeaderCellContent() метод (доступен начиная с v1.1.16)
public string getHeaderCellContent() | ||
| {return} | строка | содержимое ячейки заголовка. |
public function getHeaderCellContent()
{
if(trim($this->headerTemplate)==='')
return $this->grid->blankDisplay;
if($this->selectableRows===null && $this->grid->selectableRows>1)
$item=CHtml::checkBox($this->id.'_all',false,array('class'=>'select-on-check-all'));
elseif($this->selectableRows>1)
$item=CHtml::checkBox($this->id.'_all',false);
else
$item=parent::getHeaderCellContent();
return strtr($this->headerTemplate,array(
'{item}'=>$item,
));
}
Возвращает содержимое ячейки заголовка. Этот метод отобразит чекбокс в заголовке, когда selectableRows больше 1 или в случае, когда selectableRows равно null, а CGridView::selectableRows больше 1.
init() метод
public void init() |
public function init()
{
if(isset($this->checkBoxHtmlOptions['name']))
$name=$this->checkBoxHtmlOptions['name'];
else
{
$name=$this->id;
if(substr($name,-2)!=='[]')
$name.='[]';
$this->checkBoxHtmlOptions['name']=$name;
}
$name=strtr($name,array('['=>"\\[",']'=>"\\]"));
if($this->selectableRows===null)
{
if(isset($this->checkBoxHtmlOptions['class']))
$this->checkBoxHtmlOptions['class'].=' select-on-check';
else
$this->checkBoxHtmlOptions['class']='select-on-check';
return;
}
$cball=$cbcode='';
if($this->selectableRows==0)
{
//.. read only
$cbcode="return false;";
}
elseif($this->selectableRows==1)
{
//.. only one can be checked, uncheck all other
$cbcode="jQuery(\"input:not(#\"+this.id+\")[name='$name']\").prop('checked',false);";
}
elseif(strpos($this->headerTemplate,'{item}')!==false)
{
//.. process check/uncheck all
$cball=<<<CBALL
jQuery(document).on('click','#{$this->id}_all',function() {
var checked=this.checked;
jQuery("input[name='$name']:enabled").each(function() {this.checked=checked;});
});
CBALL;
$cbcode="jQuery('#{$this->id}_all').prop('checked', jQuery(\"input[name='$name']\").length==jQuery(\"input[name='$name']:checked\").length);";
}
if($cbcode!=='')
{
$js=$cball;
$js.=<<<EOD
jQuery(document).on('click', "input[name='$name']", function() {
$cbcode
});
EOD;
Yii::app()->getClientScript()->registerScript(__CLASS__.'#'.$this->id,$js);
}
}
Инициализирует столбец. Этот метод регистрирует необходимый клиентский скрипт для столбца чекбоксов.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CCheckBoxColumn