Browse Source

Merge branch '9074-checkboxColumn-selectedRows-fix' of https://github.com/NekitoSP/yii2 into NekitoSP-9074-checkboxColumn-selectedRows-fix

tags/2.0.8
SilverFire - Dmitry Naumenko 9 years ago
parent
commit
f2e8725de5
  1. 2
      framework/assets/yii.gridView.js
  2. 18
      framework/grid/CheckboxColumn.php
  3. 9
      framework/grid/GridView.php

2
framework/assets/yii.gridView.js

@ -143,7 +143,7 @@
var $grid = $(this);
var id = $(this).attr('id');
gridData[id].selectionColumn = options.name;
if (!options.multiple) {
if (!options.multiple || !options.checkAll) {
return;
}
var checkAll = "#" + id + " input[name='" + options.checkAll + "']";

18
framework/grid/CheckboxColumn.php

@ -81,6 +81,15 @@ class CheckboxColumn extends Column
if (substr_compare($this->name, '[]', -2, 2)) {
$this->name .= '[]';
}
$name = $this->grid->showHeader ? $this->getHeaderCheckBoxName() : NULL;
$id = $this->grid->options['id'];
$options = json_encode([
'name' => $this->name,
'multiple' => $this->multiple,
'checkAll' => $name,
], JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
$this->grid->getView()->registerJs("jQuery('#$id').yiiGridView('setSelectionColumn', $options);");
}
/**
@ -133,4 +142,13 @@ class CheckboxColumn extends Column
return Html::checkbox($this->name, !empty($options['checked']), $options);
}
/**
* Returns header checkbox name
* @return string header checkbox name
*/
private function getHeaderCheckBoxName()
{
return rtrim($this->name, '[]') . '_all';
}
}

9
framework/grid/GridView.php

@ -272,6 +272,11 @@ class GridView extends BaseListView
$this->filterRowOptions['id'] = $this->options['id'] . '-filters';
}
$id = $this->options['id'];
$options = Json::htmlEncode($this->getClientOptions());
$view = $this->getView();
$view->registerJs("jQuery('#$id').yiiGridView($options);");
$this->initColumns();
}
@ -280,11 +285,9 @@ class GridView extends BaseListView
*/
public function run()
{
$id = $this->options['id'];
$options = Json::htmlEncode($this->getClientOptions());
$view = $this->getView();
GridViewAsset::register($view);
$view->registerJs("jQuery('#$id').yiiGridView($options);");
parent::run();
}

Loading…
Cancel
Save