我如何自定义 Yii2 gridview 排序?
How i do custom Yii2 gridview sort?
如何使用自定义 gridview
header 进行排序?
请在 Yii2
gridview
小部件 dataprovider
中给出 label
和 header
之间的区别 dataprovider
。
这是我的代码:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
[
'class' => 'yii\grid\DataColumn',
'value' => function ($data) {
return $data->myTitle;
},
'headerOptions' => ['style'=>'text-align:center'],
'header' => 'Page Title',
'label' => 'Title'
],
]); ?>
header
和label
执行相同的功能吗?
如何在 $data->myTitle
中执行排序?
这是我的输出屏幕:
我希望页面标题、状态、修改日期应该处于活动状态。
提前致谢。
我不太确定我理解你的问题,但排序选项可以包含在你的 modelsearch.php
中。所以在你的情况下你必须这样做。
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['your_column'=>SORT_ASC]]
]);
如果myTitle
是数据库中的一个字段,为什么要使用这么长的语法。刚刚
'Columns'=>[
..
'myTitle',
..
],
应该可以正常工作,并且应该可以根据需要进行排序
如果您想要不同的 header/label 列,请使用 label 而不是 header,因为 header 只是一个单元格内容,不能用于排序,而 label 可以。 details
[
..
'attribute'=>'myTitle',
'label' => 'Page Title'
..
],
由于 myTitle
是数据库中的一个字段而不是自定义值,您可以只使用 attribute。其余的可能是不必要的,例如默认的 class
是 DataColumn
'columns' => [
[
'attribute' => 'myTitle',
'label' => 'Label',
]
找到答案。
请在您的搜索模型中为 ActiveDataProvider 添加属性。
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 5,
],
'sort' => ['attributes' => ['myTitle']],
]);
在小部件中添加属性选项:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
[
'class' => 'yii\grid\DataColumn',
'value' => function ($data) {
return $data->myTitle;
},
'headerOptions' => ['style'=>'text-align:center'],
'attribute' => 'myTitle',
'label' => 'Page Title'
],
]); ?>
如何使用自定义 gridview
header 进行排序?
请在 Yii2
gridview
小部件 dataprovider
中给出 label
和 header
之间的区别 dataprovider
。
这是我的代码:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
[
'class' => 'yii\grid\DataColumn',
'value' => function ($data) {
return $data->myTitle;
},
'headerOptions' => ['style'=>'text-align:center'],
'header' => 'Page Title',
'label' => 'Title'
],
]); ?>
header
和label
执行相同的功能吗?
如何在 $data->myTitle
中执行排序?
这是我的输出屏幕:
我希望页面标题、状态、修改日期应该处于活动状态。
提前致谢。
我不太确定我理解你的问题,但排序选项可以包含在你的 modelsearch.php
中。所以在你的情况下你必须这样做。
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['your_column'=>SORT_ASC]]
]);
如果myTitle
是数据库中的一个字段,为什么要使用这么长的语法。刚刚
'Columns'=>[
..
'myTitle',
..
],
应该可以正常工作,并且应该可以根据需要进行排序
如果您想要不同的 header/label 列,请使用 label 而不是 header,因为 header 只是一个单元格内容,不能用于排序,而 label 可以。 details
[
..
'attribute'=>'myTitle',
'label' => 'Page Title'
..
],
由于 myTitle
是数据库中的一个字段而不是自定义值,您可以只使用 attribute。其余的可能是不必要的,例如默认的 class
是 DataColumn
'columns' => [
[
'attribute' => 'myTitle',
'label' => 'Label',
]
找到答案。
请在您的搜索模型中为 ActiveDataProvider 添加属性。
$dataProvider = new ActiveDataProvider([
'query' => $query,
'pagination' => [
'pageSize' => 5,
],
'sort' => ['attributes' => ['myTitle']],
]);
在小部件中添加属性选项:
<?= GridView::widget([
'dataProvider' => $dataProvider,
'columns' => [
[
'class' => 'yii\grid\DataColumn',
'value' => function ($data) {
return $data->myTitle;
},
'headerOptions' => ['style'=>'text-align:center'],
'attribute' => 'myTitle',
'label' => 'Page Title'
],
]); ?>