Heim >php教程 >php手册 >yii_wiki_204_using-cjuidialog-to-edit-rows-in-a-cgridview(通过CJuiDialog在CGridView中修改行数据)

yii_wiki_204_using-cjuidialog-to-edit-rows-in-a-cgridview(通过CJuiDialog在CGridView中修改行数据)

WBOY
WBOYOriginal
2016-06-21 08:48:58820Durchsuche

/*** 
Using CJuiDialog to edit rows in a CGridView   
 
http://www.yiiframework.com/wiki/204/using-cjuidialog-to-edit-rows-in-a-cgridview 
 
translated by php攻城师 
 
http://blog.csdn.net/phpgcs 
 
Scenario 
Solution 
Column hyperlink 
Javascript function 
 
**/  
  
/*** 
背景      Scenario 
***/   
  
我这里有一个 一系列的 clients/events 所属的 CGridView , 对每一行 (eventClient), 我想要实现快速的编辑 eventClient对话框。  
  
我的方法基于 这篇wiki http://www.yiiframework.com/wiki/145/cjuidialog-for-create-new-model/  
  
/*** 
 
解决方法  Solution  
 
***/  
  
首先基于 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()  
{  
    // public property  
    var _updateComment_url;  
   
    <?php echo CHtml::ajax(array(  
        &#39;url&#39;=>&#39;js:updateComment._updateComment_url&#39;,  
        &#39;data&#39;=> "js:$(this).serialize()",  
        &#39;type&#39;=>&#39;post&#39;,  
        &#39;dataType&#39;=>&#39;json&#39;,  
        &#39;success&#39;=>"function(data)  
            {  
                if (data.status == &#39;failure&#39;)  
                {  
                    $(&#39;#dialogComment div.divComment&#39;).html(data.div);  
                    // Here is the trick: on submit-> once again this function!  
                    $(&#39;#dialogComment div.divComment form&#39;).submit(updateComment);  
                }  
                else  
                {  
                    $(&#39;#dialogComment div.divComment&#39;).html(data.div);  
                    setTimeout(\"$(&#39;#dialogComment&#39;).dialog(&#39;close&#39;) \",2000);  
   
                    // Refresh the grid with the update  
                    $.fn.yiiGridView.update(&#39;event-client-grid&#39;);  
                }  
   
        } ",  
    ))?>;  
    return false;  
   
}  
   
</script>  



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn