如何将复选框列添加到 yii2 中现有的 gridview 列?
How to add a checkbox column to existing gridview columns in yii2?
我想向 gridview 添加一列,但我不想列出所有列(因为有些列是默认的)。
我知道我可以通过以下方式添加一列:
$widget = Yii::createObject([
'class' => 'yii\grid\GridView',
'dataProvider' => $dataProvider,
'columns' => [
'col1',
'col2',
'class' => 'yii\grid\CheckboxColumn',
]
]);
但我不想列出所有默认列,只添加一个复选框列。喜欢关注:
$widget = Yii::createObject([
'class' => 'yii\grid\GridView',
'dataProvider' => $dataProvider,
'columns' => [
'class' => 'yii\grid\CheckboxColumn',
]
]);
然后它将显示在默认列的末尾。
我该怎么做?
yii 框架不支持这个需求。我们可以通过其他方式做到这一点。
第一个:获取所有列名并在显示列表之前插入复选框列
$query = DataModel::find()->select('...')->asArray();
$columns = array_keys($query->one()); // if you know that all column names can also be assigned directly without dynamic acquisition
array_unshift(['class' => \yii\grid\CheckboxColumn::class], $columns);
$widget = Yii::createObject([
'class' => 'yii\grid\GridView',
'dataProvider' => new \yii\data\ActiveDataProvider([
'query' => $query,
]),
'columns' => $columns,
]);
]);
其二:扩展yii框架的yii\grid\GridView::initColumns()
方法。例如:
class MyGridView extends \yii\grid\GridView {
public $expandColumns = [];
protected function initColumns() {
parent::initColumns();
\yii\helpers\ArrayHelper::merge($this->columns, $this->expandColumns);
}
}
// in view
$widget = Yii::createObject([
'class' => MyGridView::class,
'dataProvider' => $dataProvider,
'expandColumns' => [
[
'class' => \yii\grid\CheckboxColumn::class,
],
]
]);
答案翻译自Google翻译,希望对你有所帮助
我想向 gridview 添加一列,但我不想列出所有列(因为有些列是默认的)。 我知道我可以通过以下方式添加一列:
$widget = Yii::createObject([
'class' => 'yii\grid\GridView',
'dataProvider' => $dataProvider,
'columns' => [
'col1',
'col2',
'class' => 'yii\grid\CheckboxColumn',
]
]);
但我不想列出所有默认列,只添加一个复选框列。喜欢关注:
$widget = Yii::createObject([
'class' => 'yii\grid\GridView',
'dataProvider' => $dataProvider,
'columns' => [
'class' => 'yii\grid\CheckboxColumn',
]
]);
然后它将显示在默认列的末尾。 我该怎么做?
yii 框架不支持这个需求。我们可以通过其他方式做到这一点。
第一个:获取所有列名并在显示列表之前插入复选框列
$query = DataModel::find()->select('...')->asArray();
$columns = array_keys($query->one()); // if you know that all column names can also be assigned directly without dynamic acquisition
array_unshift(['class' => \yii\grid\CheckboxColumn::class], $columns);
$widget = Yii::createObject([
'class' => 'yii\grid\GridView',
'dataProvider' => new \yii\data\ActiveDataProvider([
'query' => $query,
]),
'columns' => $columns,
]);
]);
其二:扩展yii框架的yii\grid\GridView::initColumns()
方法。例如:
class MyGridView extends \yii\grid\GridView {
public $expandColumns = [];
protected function initColumns() {
parent::initColumns();
\yii\helpers\ArrayHelper::merge($this->columns, $this->expandColumns);
}
}
// in view
$widget = Yii::createObject([
'class' => MyGridView::class,
'dataProvider' => $dataProvider,
'expandColumns' => [
[
'class' => \yii\grid\CheckboxColumn::class,
],
]
]);
答案翻译自Google翻译,希望对你有所帮助