/ / Yii2 dwa siatki z edytowalnymi kolumnami w jednym formularzu - php, yii2, kartik-v

Yii2 dwa gridviews z edytowalnymi kolumnami w ramach jednej postaci - php, yii2, kartik-v

Chciałbym wyświetlić dwa Gridviews Kartika (za pomocą edytowalny kolumny) w jednym formularzu.

Problem polega na tym, że jeśli chciałbym edytować wartość w drugim widoku siatki, edytowalne okienko otwiera się dla odpowiadającego wiersza w pierwszym widoku siatki.

Patrząc na html, identyfikator edytorów jest taki sam dla obu przeglądów.

Obrazek z dwóch siatek; można edytować w drugiej siatce.

Definicja dwóch widoków siatki w widoku:

echo GridView::widget([
"id" => "your_gridview_one",
"dataProvider"=>$dataProvider,
"columns"=>$gridColumns,
//"filterModel" => $searchModel,
"showHeader" => true,
]);

echo GridView::widget([
"id" => "your_gridview_two",
"dataProvider"=>$secondDataProvider,
"columns"=>$gridColumns,
//"filterModel" => $searchModel,
"showHeader" => true,
]);

Jak mogę zmienić identyfikatory edytorów?

Odpowiedzi:

1 dla odpowiedzi № 1

Nie można użyć tych samych kolumn $ gridColumns w obu GridView. Musisz nadać formularzowi (edytowalne okienko) i pole wejściowe w nim unikalny identyfikator HTML. Coś podobnego:

[
"class" => "kartikgridEditableColumn",
"attribute" => "name",
"editableOptions" => function ($model, $key, $index) {
return [
"formOptions" => [
"id" => "gv1_" . $model->id . "_form_name",
"action" => yiihelpersUrl::to(["recipe-lang/index"])
],
"options" => [
"id" => "gv1_" . $model->id . "_name",
],
];
},
],