【问题标题】:How to get value of checked gridview column如何获取选中的gridview列的值
【发布时间】:2015-09-30 04:46:44
【问题描述】:

大家好,我有一个如下所示的网格视图 我想得到选中列的'user_id' 我该怎么做???

我可以轻松获取选中的列 ID,但我不知道如何在 gridview 中获取这些选中列的数据 我想通过 javascript 获取它,以便我可以将它传递给服务

<?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'showOnEmpty'=>true,
        'columns' => [
            ['class' => 'yii\grid\CheckboxColumn'],
            [

                'attribute' => 'event_id',
                'label' => 'Event Title',
                'value' => 'event.title'
            ],
            [
                'attribute' => 'user_id',
                'label' => 'Email',
                'value' => 'users.email',
            ],
            'user_type',
        ],
    ]);
 ?>

这是我的 javascript 来获取检查列的 ID

jQuery(document).ready(function() {
btnCheck  = $("#send");
btnCheck.click(function() {
    var keys = $("#w0").yiiGridView("getSelectedRows");
  }
});

让我告诉你这个流程

首页是这样的gridview 现在用户将点击那个小用户标志,这将打开您可以在下面看到的页面

那时我想向所有选定的用户发送消息

因为在我的情况下,title 来自不同的表,nameemail 来自不同的表,所以我想要 idsuser

为此,我想要user_id,但我得到了一些随机值 我能在这里做什么???

我试过了,但它返回了一些随机字符串

public function search($params)
{

    if(!isset($_GET['id'])){
        $id='';
    }
    else{
        $id=$_GET['id'];
    }

    $query = Checkin::find()->where(['event_id'=> $id]);

    $query->joinWith(['event', 'users']);

    $dataProvider = new ActiveDataProvider([
        'query' => $query,
    ]);

    $this->load($params);

    if (!$this->validate()) {
        return $dataProvider;
    }

    $query->andFilterWhere([
        'id' => $this->id,
        'created_date' => $this->created_date,
        'created_by' => $this->created_by,
        'updated_date' => $this->updated_date,
        'updated_by' => $this->updated_by,
    ]);

    $query->andFilterWhere(['like', 'user.email', $this->user_id]);
    $query->andFilterWhere(['like', 'user_type', $this->user_type]);

    $dataProvider->keys ='user_id';

    return $dataProvider;
}

【问题讨论】:

  • 你想要gridview行或列的数据?
  • @kailas 我想要列.. 就像我想要选中列的user_id.. ùser_id 在 3d 列中..
  • 签入这些链接yiiframework.com/forum/index.php/topic/…跳它解决你的问题
  • @Kailas 我已经看到了,但我的情况有点不同,因为在我的情况下,我不想要网格的pks 我想要第三列中的数据。我正在显示来自 2 个不同表的数据。
  • 您收到任何错误消息。在控制台中?

标签: javascript gridview yii2 yii2-advanced-app


【解决方案1】:

更新你的DataProvider集合$dataProvider-&gt;keys ='userId'然后你就可以得到user_id的所有键

data-id的GridView并获取allSelectedColumns

【讨论】:

  • 我应该在gridview中这样做吗?还是在控制器中?
  • $dataProvider 可能是您通过 Crud 创建时的 searchModel
  • 那么我应该在 mysearch 模型还是控制器中这样做?我尝试在控制器中做,但没有工作......
  • 我已经添加了搜索模型和你告诉我使用但它不起作用的代码
  • 我明白了.. $dataProvider-&gt;keys 将数组作为值,但我想将列设置为数据键,所以我需要 $dataProvider-&gt;key,它解决了问题。无论如何感谢您的帮助
【解决方案2】:

您只需替换此代码

['class' => 'yii\grid\CheckboxColumn'],

下面的代码

[
    'class' => 'yii\grid\CheckboxColumn',
    'checkboxOptions' => function($data) {
        return ['value' => $data->user_id];
    },
],

【讨论】:

  • 不,它没有改变任何东西.. 它仍然返回其他东西.. 我什至不知道它的返回值是什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多