是否可以更新 CListView 中的各个字段?我正在寻找一种解决方案,让用户在所有表记录的这个视图中编辑他们的记录。
一个例子是用户有一个相关约会的列表。他们可能希望快速将约会标记为优先级低/高,而无需转到更新视图本身。
除了 CListView 之外,还有其他小部件可用于此类功能吗?
抱歉,我在研究这个时遇到了一些死胡同,我可能错过了一些非常明显的东西。
让我们说下面是您的列表视图
<?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
没有奇迹般的解决方案,这取决于您要完成的任务;
如果你想有按钮来改变任务优先级,你可以使用 ajax 链接(http://www.yiiframework.com/doc/api/1.1/CHtml#ajaxLink-detail)。
如果你想内联编辑文本,你可以结合使用 Jeditable ( http://www.appelsiini.net/projects/jeditable ) 和一些 ajax 来编辑文本,然后更新项目的内容。
顺便提一下,您可以使用renderPartial 方法将视图部分呈现为字符串(即 PHP 变量) 。因此,您可以只呈现更新的 CListView 项并将其返回给 ajax 回调以更新内容。
快乐编码!
你可以实施,
TbEditableColumn (YiiBooster) 或 EditableColumn (x-editable for Yii) 并即时编辑您的日期。在相关控制器中创建新的一些更新操作后,您只需要实现上述小部件之一,从 POST 请求接收数据并更新数据。