安装: 0

依赖: 0

建议者: 0

安全性: 0

星标: 0

关注者: 1

分支: 0

公开问题: 0

语言:JavaScript

类型:yii2-extension

1.0 2021-01-27 18:03 UTC

This package is auto-updated.

Last update: 2024-09-28 05:07:29 UTC


README

基本使用需要

在GridView组件的代码中,在启动时添加以下代码

if ($this->freezed && $this->freezeOptions) {
        $freezeOptions = Json::htmlEncode(array_merge($this->freezeOptions, ['container' => "#{$id}-container"]));

        FreezeAsset::register($view);

        $view->registerJs("jQuery('#$id-container').freezeGridView('init', $freezeOptions);");
}

例如,在您项目中使用由kartik继承的GridView组件中。

还需要给这个组件添加必要的属性

/**
 * Включение закрепления колонок
 * @var bool
 */
public $freezed = true;

/**
 * Параметры закрепления (перечислить колонки, которые надо закрепить)
 * @var array
 *
 * ```php
 * $this->freezeOptions = [
 *   'freezeLeftColumns' => ['id', 'name', ...]
 *   'freezeRightColumns' => ['id', 'name', ...]
 * ]
 * ```
 */
public $freezeOptions = [];

我们将处理列并在SearchModel中形成数组,具体来说是在基础模型中,以便方法可以在任何地方使用或使用trait,这样更方便。因此,我们添加所需的方法

/**
 * Возвращает настройки для закрепления
 * @return array
 */
public function getFreezeOptions() : array
{
    return [
        'freezeLeftColumns' => $this->getFreezeLeftColumns(),
        'freezeRightColumns' => $this->getFreezeRightColumns()
    ];
}

getFreezeLeftColumns和getFreezeRightColumns方法没有在文档中列出,因为它们因人而异。但原理是这样的 - 这些方法应该返回需要固定的列名。如何保存这些信息则由每个人自行决定。我是在数据库中实现的,有人可能使用cookies或session。

您可以这样使用它

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => $searchModel->getGridColumns(),
    'freezeOptions' => $searchModel->getFreezeOptions(),
])?>