我这里有一个 一系列的 clients/events 所属的 CGridView , 对每一行 (eventClient), 我想要实现快速的编辑 eventClient对话框。
我的方法基于 这篇wiki http:
首先基于 wiki 145 做了所有工作后, 再来 修改我们 的CGridView:
Column hyperlink
对每一列 , 在js 函数中设置 _updateComment_url 属性 为需要的 url。
array
(
'name'=>'comment',
'header'=>'Comments',
'type'=>'raw',
'value'=>'CHtml::link(
(
$data
[
"comment"
]?
$data
[
"comment"
]:
"(comment)"
),
""
,
array
(
\'style\'=>\'cursor: pointer; text-decoration: underline;\',
\'onclick\'=>\'{
updateComment._updateComment_url="\'.
Yii::app()->createUrl(
"eventClient/updateComment"
,
array
(
"id"
=>
$data
[
"id"
])
)
.\'";
updateComment();
$(
"#dialogComment"
).dialog(
"open"
);}\'
)
);',
),
Javascript
function
在同一个页面我们将 调用这个 动作的 updateComment() 方法包含进来。
<script type=
"text/javascript"
>
function
updateComment()
{
var
_updateComment_url;
<?php
echo
CHtml::ajax(
array
(
'url'=>'js:updateComment._updateComment_url',
'data'=>
"js:$(this).serialize()"
,
'type'=>'post',
'dataType'=>'json',
'success'=>"
function
(data)
{
if
(data.status == 'failure')
{
$('#dialogComment div.divComment').html(data.div);
$('#dialogComment div.divComment form').submit(updateComment);
}
else
{
$('#dialogComment div.divComment').html(data.div);
setTimeout(\"$('#dialogComment').dialog('close') \",2000);
$.fn.yiiGridView.update('event-client-grid');
}
} ",
))?>;
return
false;
}
</script>