CListView 内の個々のフィールドを更新することは可能ですか? すべてのテーブル レコードのこのビューでユーザーが自分のレコードを編集できるようにするソリューションを探しています。
例として、ユーザーが関連付けられた予定のリストを持っている場合があります。更新ビュー自体に移動せずに、予定を優先度低/高としてすばやくマークしたい場合があります。
この種の機能のための CListView 以外のウィジェットはありますか?
申し訳ありませんが、私はこれを調査する際に行き詰まりに遭遇しました。
あなたは実装することができます、
TbEditableColumn (YiiBooster) または EditableColumn (Yii では x-editable) を使用して、その場で日付を編集します。関連するコントローラーで新しいいくつかの更新アクションを作成し、POST 要求からデータを受信してデータを更新した後、上記のウィジェットのいずれかを実装する必要があるだけです。
奇跡的な解決策はありません。達成したいタスクによって異なります。
タスクの優先度を変更するボタンが必要な場合は、ajax リンク ( http://www.yiiframework.com/doc/api/1.1/CHtml#ajaxLink-detail ) を使用できます。
テキストをインラインで編集する場合は、Jeditable ( http://www.appelsiini.net/projects/jeditable ) といくつかの ajax を組み合わせてテキストを編集し、アイテムのコンテンツを更新できます。
ところで、renderPartial メソッドを使用して、ビューを文字列 (PHP 変数) に部分的にレンダリングできることを簡単に思い出してください。したがって、更新された CListView アイテムのみをレンダリングし、それを ajax コールバックに返してコンテンツを更新することができます。
ハッピーコーディング!
以下があなたのリストビューだとしましょう
<?php $this->widget('zii.widgets.CListView', array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'id'=>'itemList',
)); ?>
そしてあなたの部分(_view.php)
<?php echo CHtml::ajaxLink('Mark Status',array('appointment/update','id'=>$data->id),
array('type'=>'POST','success'=>'function(){loadListView()}'),
array('confirm'=>'Are you sure you want to mark complete this appointment?',
'id'=>'mark-'.$data->id)); ?>
更新されたレコードが他のデータに影響を与える可能性があるため、グリッド全体 (個々のフィールドではなく) をリロードする機能。
<script type="text/javascript">
function loadListView(){
$.fn.yiiListView.update('itemList');
}
</script>
あなたの例になるかもしれないいくつかの参照があります
http://help.discretelogix.com/php/yii/enable-in-place-editing-in-yii-grid.htm