日期:2011-07-05  浏览次数:20567 次

本文主要内容:
1, 正常情况下 CGridView 实现 Ajax 分页和排序的原理
2, 分页和排序无法Ajax的情况分析
3, 自定义分页(重写CLinkPager)后如何实现 Ajax 分页和排序
/***
author: php攻城师
http://blog.csdn.net/phpgcs
***/
 
 
[php]  
<?php   
$this->widget('zii.widgets.grid.CGridView', array(  
    'id'=>'keyword-grid',  
    'dataProvider'=>$model->search(),  
    'cssFile'=>false,  
    'template'=>'{items} <div class="page_area">{pager} {summary}</div>',  
    'pager'=>array('cssFile'=>false),  
    'ajaxUpdate'=>true,  
    'columns'=>array(  
        array(  
            'name'=>'leader_name',  
            'value'=>'$data->event',  
            'header'=>'关键词名称',  
            'headerHtmlOptions'=>array('width'=>'130px'),  
        ), .... ....  
以上代码实现一个常规的 CGridView , 除了 pager 用了自定义的样式。。
 
而在页面的源代码中,我来找出相关的部分:
 
[javascript]  
<script type="text/javascript" src="/chuanmei/assets/f5d36ac5/jquery.ba-bbq.js"></script>  
[javascript] view plaincopyprint?
<script type="text/javascript" src="/chuanmei/assets/fb90bba/gridview/jquery.yiigridview.js"></script>  
<script type="text/javascript">  
/*<![CDATA[*/  
jQuery(function($) {  
jQuery('#keyword-grid a.delete').live('click',function() {  
    if(!confirm('确定要删除这条数据吗?')) return false;  
    var th=this;  
    var afterDelete=function(){};  
    $.fn.yiiGridView.update('keyword-grid', {  
        type:'POST',  
        url:$(this).attr('href'),  
        success:function(data) {  
            $.fn.yiiGridView.update('keyword-grid');  
            afterDelete(th,true,data);  
        },  
        error:function(XHR) {  
            return afterDelete(th,false,XHR);  
        }  
    });  
    return false;  
});  
jQuery('#keyword-grid').yiiGridView({'ajaxUpdate':['1','keyword-grid'],'ajaxVar':'ajax','pagerClass':'pager','loadingClass':'grid-view-loading','filterClass':'filters','tableClass':'items','selectableRows':1,'pageVar':'keyword_page'});  
});  
/*]]>*/  
</script>  
 
其中会发现 yii 自动加载了 jquery.ba-bbq.js  &&  jquery.yiigridview.js ,以及2段 代码
其中一段是用来实现  删除 一行数据时 弹出提示框 让用户 确认是否删除 功能 的;
一段是最核心关键的 用于 ajax update grid 的, 也