0

親子サブビュー レイアウトのビューがあります。親ビューには、DB 内のすべての人を一覧表示する YiiBooster 拡張機能の GridView があります。

$this->widget('bootstrap.widgets.TbGridView', array(
        'dataProvider' => $model->search(),
        'filter' => $model,
        'ajaxUpdate' => true,
        'selectionChanged' => "updateChild", // new code
        'columns' => array(
            'firstName', 'lastName'
        )
    ));

これには ID がなく、デフォルトで yw0 が割り当てられます。

selectionChanged で呼び出される updateChild js メソッドは、人物のすべての情報を取得し、$('#childView').html(data) を使用してその情報で子ビューを更新します。親 GridView に明示的な ID が指定されている場合、次のようになります。

$this->widget('bootstrap.widgets.TbGridView', array(
        'id' => 'parentGrid' // explicit id
        'dataProvider' => $model->search(),
        'filter' => $model,
        'ajaxUpdate' => true,
        'selectionChanged' => "updateChild", // new code
        'columns' => array(
            'firstName', 'lastName'
        )
    ));

子ビューは関連データで更新されません。ソースを調べたところ、コントローラーの機能は正常に機能し、関連するすべてのデータが返されました。これはレンダリングの問題であり、表示を拒否していました。

また、子ビューのどこかに別の GridView がある場合 (人が属するさまざまなカテゴリを一覧表示するなど)、人をクリックしようとすると次のエラーが表示されます:「未定義のプロパティ tableClass を読み取れません」。

私の子ビューは部分ビューであるため、renderPartial() が使用されます。子ビューには、子ビューのさまざまな要素のクリック イベントの js リスナーがあるため、より多くのスクリプトを読み込むことができます。

誰が何が起こっているかについて何か考えを持っていますか? ありがとう。

編集:明示的な ID で動作するようになりました。別の質問から回答を得ました。ただし、「未定義のプロパティ tableClass を読み取れない」という問題は依然として存在します。renderPartial() を介して GridView を子ビューに配置したい場合、親ビューの GridView が台無しになるようです。

4

0 に答える 0