2015-09-30 5 views
2

Привет, ребята, у меня есть gridview, как показано ниже , и я хочу получить «user_id» из проверочного столбца , как я могу это сделать ???Как получить значение проверенного столбца gridview

я мог легко получить проверенный идентификатор столбца, но я не знаю, как получить данные о тех, кто проверил колонки в 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, чтобы получить идентификаторы проверяемой колонны

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

Позвольте мне сказать вам поток этой

на домашней странице является GridView как это enter image description here Теперь пользователь щелкнет на этом небольшой пользовательском знак и откроет страницу, которую вы можете увидеть ниже

Thats, когда я хочу, чтобы отправлять сообщения всех выбранных пользователей

enter image description here Потому что в моем случае title является из другой таблицы и name и email взяты из другой таблицы, поэтому я хочу ids из user таблицы

Для этого я хочу 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; 
} 
+0

вы хотите данные GridView строки или столбца? – Kailas

+0

@kailas я хочу колонку .. как я хочу 'user_id' проверенного столбца ..' ùser_id' находится в 3d колонке .. –

+0

проверить в этой ссылке http://www.yiiframework.com/forum/index.php/topic/53777-gridview-get-selected-colum/hop он решает вашу проблему – Kailas

ответ

2

Обновить ваш DataProvider набора $dataProvider->keys ='userId' затем вы сможете получить все ключи от user_id

data-id из GridView и получить allSelectedColumns

+0

должно ли я сделать это в gridview? или в контроллере? –

+0

'$ dataProvider' может быть вашим поискомModel при создании через Crud –

+0

, так что я должен делать это в модели mysearch или в контроллере? Я пробовал делать в контроллере, но не работал ... –

0

Вам нужно просто заменить этот код

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

с ниже кода

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

нет, он ничего не изменил .. его все еще возвращает что-то еще .. Я даже не знаю, что его возвращающее значение –

Смежные вопросы