【问题标题】:How do I access row number in Yii2 GridView ActionColumn?如何访问 Yii2 GridView ActionColumn 中的行号?
【发布时间】:2021-01-27 22:09:05
【问题描述】:

我在 Yii2 的 gridview 的 actionColumn 中有一些自定义按钮。我需要将行号添加到按钮数据中。这就是我所拥有的......

GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn',
            'contentOptions' => ['style' => 'font-size:20px']],
        ['header' => 'Blue or Red',
            'class' => 'yii\grid\ActionColumn',
            'template' => '{blue} {red}',
            'buttons' => [
                'blue' => function ($url, $model, $key) {
                    return bootstrap\Button::widget([
                        'label' => 'blue',
                        'id' => 'blue' . **ROW-NUMBER**,
                        'options' => [
                            'class' => 'btn-lg btn-dark votebtn',
                            'data-vote' => 1,
                            'data-row' => **ROW-NUMBER**
                        ]
                    ]);
                },
                'red' => function($url, $model, $key) {
                    return bootstrap\Button::widget([
                        'label' => 'red',
                        'id' => 'red' . **ROW-NUMBER**,
                        'options' => [
                            'class' => 'btn-lg btn-dark votebtn',
                            'data-vote' => -1,
                            'data-row' => **ROW-NUMBER**
                        ]
                    ]);
                }
            ],        
        ],
    ],
]);

我需要用什么代替 ROW-NUMBER 才能获得每个按钮所在的行?

【问题讨论】:

  • “ROW:NUMBER”是什么意思??? .. 是分贝值吗? ..是您的数据提供者中的一列吗? ..是grdiview中的行索引吗? ..
  • 网格中的文字行号,由序列列布局。

标签: gridview yii2


【解决方案1】:

假设您的“ROW-NUMBER”是有效的模型值,例如 id

如果你有模式对象,你可以使用 $model->id

 'buttons' => [
            'blue' => function ($url, $model, $key) {
                return bootstrap\Button::widget([
                    'label' => 'blue',
                    'id' => 'blue' . **ROW-NUMBER**,
                    'options' => [
                        'class' => 'btn-lg btn-dark votebtn',
                        'data-vote' => 1,
                        'data-row' => $model->id
                    ]
                ]);
            },
            'red' => function($url, $model, $key) {
                return bootstrap\Button::widget([
                    'label' => 'red',
                    'id' => 'red' . **ROW-NUMBER**,
                    'options' => [
                        'class' => 'btn-lg btn-dark votebtn',
                        'data-vote' => -1,
                        'data-row' => $model->id
                    ]
                ]);
            }
        ],        

如果您有数组,则使用 $model['id']

【讨论】:

  • 我实际上希望避免使用 $model->id。 $key 返回相同的东西。我正在寻找网格中的行号,如 serialColumn 所示。
  • 网格的行号是 $key 内容.. 所以只需将 $model->id 更改为 $key
  • 不幸的是,事实并非如此。在这种情况下,在第二行 (2) 中,$model->id 和 $key 都返回 3。
  • @MikelG 回答更新了对 $index 的建议
  • 按钮功能只接受3个参数。
【解决方案2】:

您可以通过以下方式获取行号:

'red' => function($url, $model, $key) use ($dataProvider) {
     $pagination = $dataProvider->getPagination();
     if ($pagination !== false) {
         $rowNumber = $pagination->getOffset() + $key + 1;
     } else {
         $rowNumber = $key + 1;
     }
     return bootstrap\Button::widget([
          'label' => 'red',
          'id' => 'red' . $rowNumber,
          'options' => [
          'class' => 'btn-lg btn-dark votebtn',
                'data-vote' => -1,
                'data-row' => $model->id
           ]
      ]);
}

yii2 serial number

【讨论】:

  • 不幸的是,这不起作用。得到一些奇怪的值。我的网格视图中有两个模型,它们的 $key 是 1 和 3。使用上面的代码,$rowNumber 最终是 4,而我想成为 2。
  • 我不知道你的问题。但请访问我的答案中添加的链接。我希望它会有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多