На yii2 kartik Gridview: отключить щелчок, чтобы развернуть для Select2 в ячейке

Я использую Yii2 и имею gridview с ExpandRowColumn и в одном столбце у меня есть для каждой строки Select2 и маленький div с кнопкой. Мне удалось добавить класс css kv-disable-click для каждого элемента. Я не хочу запускать расширение, но застреваю в Select2: Я пробовал выбор, добавляя class или containerClass к select2 Я пробовал также с 'rowClickExcludedTags'=>['select'], но никогда не заставляйте его работать, и всякий раз, когда я нажимаю «Выбрать», он все равно запускает расширение. Для столбцов:

$gridColumns = [
    [
      'class' => 'kartik\grid\ExpandRowColumn',
      'contentOptions' => ['style' => 'width:20px; white-space: normal;'],
      'value' => function ($model, $key, $index, $column) {
                  return GridView::ROW_COLLAPSED;
                },
      'detail' => function ($model, $key, $index, $column) {
           return Yii::$app->controller->renderPartial('_expand-row-details',      ['model' => $model]);
                },
    'header'=>'',
    'heeaderOptions' => ['class' => 'kartik-sheet-style'],
    'allowBatchToggle'=>false,
    'expandOneOnly' => true,
    'enableRowClick'=>true,
 ],
.....
,
 [
    'attribute' =>'varietes',
    'label'=> 'Variétés',
    'format'=>'raw',               
    'value' => function($model){
        $items= ArrayHelper::map($model->varietes,'IDVarietes','Nom'); 
        $leSelect2 = Select2::widget([
           'name'=>'varietes_select'.$model->IDPlantes,
           'size'=>Select2::SMALL,
           'readonly'=>true,
           'data' => $items,
           'hideSearch'=>true,                        
           'pluginEvents' => [
              "select2:opening" => "function() {
                $('.my-select2-list option').attr('disabled', 'disabled');   
               }",                           
            ],
           'language' => 'fr',
           'options' => ['placeholder' => 'Variétés disponibles ...',
                        'id'=>'varietes_select'.$model->IDPlantes,
                        'class'=>'my-select2-list kv-disable-click',
                        'containerCssClass'=>'kv-disable-click'],                        
           'pluginOptions' => [
               'allowClear' => false,
               'width'=>'80%',
            ],
          ]);
          if (count($items) >0){
            ['class' => 'drop-in-gridview', 'id' => 'varietes_select']);            
            $retour = $leSelect2;
           }else{
             $retour  = "--";
           }
           $url ='<a href = "/index.php?r=variete%2Findex&  planteId='.$model->IDPlantes.'"class = "kv-disable-click">';
                    $laDiv= $url. '<div title = "Ajouter ou modifier une variété" class = "div-varietes-border" class = "kv-disable-click"> <i class = "glyphicon glyphicon-pencil pull-right kv-disable-click" ></i><i class = "glyphicon glyphicon-plus-sign pull-right kv-disable-click" ></i></div></a>';
                    $boutons =  Html::tag('div',$laDiv,['class'=>'div-zone-varietes kv-disable-click']);                               
                    return $retour.$boutons;
                 },
                'contentOptions' => ['style' => 'width:250px; white-space: normal;font-weight:600;','class'=>'kv-disable-click'],
            ],            

покажите какой-нибудь код, а не только ваше объяснение

Serghei Leonenco 19.12.2020 02:17
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
1
606
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В конце концов я нашел решение для javascript и добавил следующий код в свое представление. Итак, теперь событие click по-прежнему обрабатывается Select, но больше не всплывает в строку сетки:

<?php
//To avoid the expand of the detailsView when clicking on the Select
$this->registerJs(
    "$('.select2-selection').on('click', function(e) {  e.stopPropagation();});",
    View::POS_READY,
    'my-button-handler'
);
?>

Другие вопросы по теме