2

「カスタム列」の機能を追加するソリューションを探していました...つまり、ユーザーに表示できる列のリストを提示し、ユーザーは見たい列を選択し、選択後にテーブルが更新されて追加されます/必要な列を削除します。

Google で何も見つかりませんでした (おそらく、私が探していたものとは異なる名前が付けられています...)

誰もがそれを達成する方法についてアイデアを持っていますか?

前もって感謝します!

4

1 に答える 1

3

これは完全なサンプルではありませんが、実装方法の手がかりを得ることができます。グリッドのレンダリング方法に関するデータを収集するために、何らかのフォームを定義する必要があります。入力フィールドが 3 つ以上ある場合は、CFormModel クラスを作成することをお勧めします。グリッドを含むファイルのフォームと div または renderPartial を含むビュー ファイルを作成します。

$form = $this->beginWidget('CActiveFormExt');
echo $form->errorSummary($model);
echo $form->labelEx($model,'column1');
echo $form->dropDownList($model
echo $form->error($model,'column1');
echo CHtml::ajaxSubmitButton('UpdateGrid',array('controller/grid'),
                                array('update'=>'#grid'),
$this->endWidget();
// you can render the 'default options' before any ajax update
$this->renderPartial('_grid',array($customColumns=>array('id','name'),'dataProvider'=>$dataProvider));

_grid.php ビュー ファイル内:

$this->widget('zii.widgets.grid.CGridView', array(
    'id' => 'grid',
    'dataProvider'=>$dataProvider,
    'columns' => $customColumns;
));

コントローラーで:

function actionGrid(){
    // recover the form data, and build the custom columns array
    $customColumns = array();
    $customColumns[] = '.....';

    $dataProvider = ...;

    $this->renderPartial('_formTrabajo', array('customColumns' => $idSiniestro, 'dataProvider' => $dataProvider'), false);
}

ajaxSubmitButton をクリックすると、ajax で指定された URL にフォームが送信されます。コントローラーからの応答には、グリッドを含むビューの renderPartial が含まれている必要があるため、jQuery 呼び出しで html を正しく置き換えることができます。表示する列のカスタム リストを使用して、コントローラーからグリッドの部分ビューに配列を渡す必要があります。

于 2012-06-04T15:23:38.477 に答える