[英]How i do custom Yii2 gridview sort?
如何使用自定義的gridview
標題進行排序?
請在Yii2
gridview
小部件dataprovider
給出label
和header
之間的區別。
這是我的代碼:
<?= 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
執行排序?
這是我的輸出屏幕:
我想要頁面標題,狀態,修改日期應該是活動的。
提前致謝。
找到了答案。
請在搜索模型中向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'
],
]); ?>
由於myTitle
是數據庫中的字段而不是自定義值,因此您只需使用屬性即可 。 其余可能是不必要的,例如默認class
是DataColumn
'columns' => [
[
'attribute' => 'myTitle',
'label' => 'Label',
]
我不太清楚我理解你的問題,但排序選項可以包含在你的modelsearch.php
。 所以在你的情況下你必須這樣做。
$dataProvider = new ActiveDataProvider([
'query' => $query,
'sort'=> ['defaultOrder' => ['your_column'=>SORT_ASC]]
]);
如果myTitle
是數據庫中的一個字段,為什么要使用如此長的語法。 只是
'Columns'=>[
..
'myTitle',
..
],
應該工作正常,應該活躍進行排序
如果你想為列提供不同的標題/標簽,請使用標簽而不是標題,因為標題只是一個單元格內容,不能用於排序,而標簽可以。 細節
[
..
'attribute'=>'myTitle',
'label' => 'Page Title'
..
],
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.