Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Yii2:通过renderAjax加载(嵌套)Gridview时注册javascript_Yii2_Pjax - Fatal编程技术网

Yii2:通过renderAjax加载(嵌套)Gridview时注册javascript

Yii2:通过renderAjax加载(嵌套)Gridview时注册javascript,yii2,pjax,Yii2,Pjax,我正在使用Yii2,并试图使用detailUrl选项从主GridView中的ExpandRowColumn(kartik\grid\ExpandRowColumn)中加载GridView(kartik\grid\GridView) 使用“详细信息”选项时,一切正常,该选项在页面加载时加载所有子网格,从而破坏页面加载时间。使用detailUrl选项,子网格可以正确加载,但是子网格上的分页和排序会出现故障,因为在正常页面加载时使用Gridview注册的javascript似乎没有初始化 我的代码:

我正在使用Yii2,并试图使用detailUrl选项从主GridView中的ExpandRowColumn(kartik\grid\ExpandRowColumn)中加载GridView(kartik\grid\GridView)

使用“详细信息”选项时,一切正常,该选项在页面加载时加载所有子网格,从而破坏页面加载时间。使用detailUrl选项,子网格可以正确加载,但是子网格上的分页和排序会出现故障,因为在正常页面加载时使用Gridview注册的javascript似乎没有初始化

我的代码:

可扩展行列

$this->columns[] = [

                'class' => 'kartik\grid\ExpandRowColumn',
                'expandOneOnly' => true,
                'width' => '50px',
                'visible' => true,
                'order' => DynaGrid::ORDER_FIX_LEFT,
                'value' => function ($model, $key, $index, $column) {
                    return GridView::ROW_COLLAPSED;
                },
                'detailUrl' => Yii::$app->urlManager->createUrl(['/' . Yii::$app->controller->id . '/sector-details', 'filter' => $this->getSubgridFilter()]),

                /*
                  //Proper functioning code using detail option
                  'detail' => function ($model, $key, $index, $column) {
                  $searchModel = new \app\models\search\Subject;
                  $searchModel->bySector = $key;
                  $dataProvider = $searchModel->search($this->getSubGridFilter());
                  return Yii::$app->controller->renderPartial('/linkage/_subgrid', [
                  'searchModel' => $searchModel,
                  'dataProvider' => $dataProvider,
                  'gridId' => $key,
                  ]);
                  },
                 * 
                 */
            ];
public function actionSectorDetails(array $filter = [])
{
    if (isset($_POST['expandRowKey'])) {
        $sectorId = $_POST['expandRowKey'];
        $searchModel = $this->_initSearch();
        $searchModel->bySector = $sectorId;
        $dataProvider = $searchModel->search($filter);
        return $this->renderAjax('/linkage/_subgrid', [
                    'searchModel' => $searchModel,
                    'dataProvider' => $dataProvider,
                    'gridId' => $sectorId,
        ]);
    } else {
        return '<div class="alert alert-danger">No data found</div>';
    }
}
控制器动作

$this->columns[] = [

                'class' => 'kartik\grid\ExpandRowColumn',
                'expandOneOnly' => true,
                'width' => '50px',
                'visible' => true,
                'order' => DynaGrid::ORDER_FIX_LEFT,
                'value' => function ($model, $key, $index, $column) {
                    return GridView::ROW_COLLAPSED;
                },
                'detailUrl' => Yii::$app->urlManager->createUrl(['/' . Yii::$app->controller->id . '/sector-details', 'filter' => $this->getSubgridFilter()]),

                /*
                  //Proper functioning code using detail option
                  'detail' => function ($model, $key, $index, $column) {
                  $searchModel = new \app\models\search\Subject;
                  $searchModel->bySector = $key;
                  $dataProvider = $searchModel->search($this->getSubGridFilter());
                  return Yii::$app->controller->renderPartial('/linkage/_subgrid', [
                  'searchModel' => $searchModel,
                  'dataProvider' => $dataProvider,
                  'gridId' => $key,
                  ]);
                  },
                 * 
                 */
            ];
public function actionSectorDetails(array $filter = [])
{
    if (isset($_POST['expandRowKey'])) {
        $sectorId = $_POST['expandRowKey'];
        $searchModel = $this->_initSearch();
        $searchModel->bySector = $sectorId;
        $dataProvider = $searchModel->search($filter);
        return $this->renderAjax('/linkage/_subgrid', [
                    'searchModel' => $searchModel,
                    'dataProvider' => $dataProvider,
                    'gridId' => $sectorId,
        ]);
    } else {
        return '<div class="alert alert-danger">No data found</div>';
    }
}
公共函数ActionSector详细信息(数组$filter=[])
{
如果(isset($_POST['expandRowKey'])){
$sectorId=$_POST['expandRowKey'];
$searchModel=$this->_initSearch();
$searchModel->bySector=$sectorId;
$dataProvider=$searchModel->search($filter);
返回$this->renderAjax('/linkage/_subgrid'[
“searchModel”=>$searchModel,
“dataProvider”=>$dataProvider,
“gridId”=>$sectorId,
]);
}否则{
返回“未找到数据”;
}
}
Gridview

//ID examples: actor-subgrid-x
$gridId = Yii::$app->controller->id . '-subgrid-' . $gridId;
$glyph = app\helpers\IconHelper::getIcon($caller);



$gridConfig = [
    'simple' => true,
    'id' => $gridId . '-inner',
    'title' => $title,
    'model' => $searchModel,
    'provider' => $dataProvider,
    'pagerOptions' => ['linkOptions' => ['class' => 'item-link']]
];
?>

<div class="row">
    <div class="col⁻xs-12">
        <?php
        Pjax::begin(['id' => $gridId, 'enablePushState' => false]);
        DynaGrid::widget([
                    'columns' => $this->columns,
                    'storage' => DynaGrid::TYPE_COOKIE,
                    'theme' => $this->theme,
                    'userSpecific' => false,
                    'showPersonalize' => false,
                    'showFilter' => false,
                    'showSort' => false,
                    'allowThemeSetting' => false,
                    'gridOptions' => $this->gridOptions,
                    'options' => ['id' => $gridId], // a unique identifier is important
        ]);
        Pjax::end()
        ?>
    </div>
</div>
//ID示例:actor-subgrid-x
$gridId=Yii::$app->controller->id-子网格-'$gridId;
$glyph=app\helpers\IconHelper::getIcon($caller);
$gridConfig=[
“简单”=>正确,
'id'=>$gridId'-内部',
“title”=>$title,
“模型”=>$searchModel,
“提供者”=>$dataProvider,
'pagerOptions'=>['linkOptions'=>['class'=>'项目链接']]
];
?>
问题是,每当我单击分页或排序链接时,它都会重定向到detailUrl调用的链接,即扇区详细信息,而不是主控制器操作

处理PJAX以捕获子网格分页和排序的javascript似乎没有加载

如何使用renderAjax完全加载Gridview? 请帮忙

我怎样才能解决这个问题