当需要构建 GridView的时候;

常常用 CArrayDataProvider 或者 CActiveDataProvider
这是就需要一个CActiveRecord

比如:

 857         $sql = "SELECT * FROM zhuanli_applicantCount where kId=:kId order by percentage desc";

 858        
 
$rawData= model_applicant::model()->findAllBySql($sql,array('kId'=>$KDValue));

 859         $IDARRAY = array();

 860         

 861         $paginationTop = new CPagination(sizeof($rawData));

 862         $paginationTop->pageVar = 'page';

 863         $paginationTop->pageSize= 10;

 864         $paginationButtom = clone $paginationTop;

 865         $dataProvider =
 
new CArrayDataProvider($rawData, array(

 866             'keyField'=>false,

 867         ));

 868         $this->render('applicantListMore', array(

 869             'dataProvider'=>$dataProvider,

 870             'paginationTop'=>$paginationTop,

 871             'totalItemCount'=>sizeof($rawData),

 872             'paginationButtom'=>$paginationButtom,

 873         ));






如果需要展示的数据主题并不在一个数据表中,而是我们用Coreseek得到的一个数组,或者就是一个普通的数组

如何用数组数据来展现 GridView视图呢?

首先可以去看下$dataProvider =
 
new CArrayDataProvider($rawData, array(

的数据结构

object(CArrayDataProvider)#37 (10) {

  ["keyField"]=>

  bool(false)

 
 
["rawData"]=>
  array(24) {
    [0]=>
    array(2) {
      ["provinceId"]=>
      string(2) "11"
      ["provinceName"]=>
      string(9) "江苏省"
    }
……
……
    [23]=>
    array(2) {
      ["provinceId"]=>
      string(2) "15"
      ["provinceName"]=>
      string(9) "江西省"
    }
  }

  ["_id":"CDataProvider":private]=>
  NULL
  ["_data":"CDataProvider":private]=>
  NULL
  ["_keys":"CDataProvider":private]=>
  NULL
  ["_totalItemCount":"CDataProvider":private]=>
  NULL
  ["_sort":"CDataProvider":private]=>
  NULL
  ["_pagination":"CDataProvider":private]=>
  NULL
  ["_e":"CComponent":private]=>
  NULL
  ["_m":"CComponent":private]=>
  NULL
}
好,那我们想要的结果是最后能够

  $dataProvider = new CArrayDataProvider($IDARRAY, array(

那就来构建这个数组


 734         $IDARRAY = array();

 735         $total =0;

 736         $totalItemCount = 0;

 737         if($result['total'])

 738         {

 739             foreach($result['matches'] AS $k=>$v)

 740             {

 741                 $IDARRAY[] = array('site_name'=>$v['attrs']['site_name'],'count'=>$v['attrs']['@count']);

 742                 $total+= $v['attrs']['@count'];

 743             }

 744             $totalItemCount = $result['total'];

 745             $this->sourceMoreIDARRAY=$IDARRAY;

 746             $this->sourceMoreNum=$total;

 747         }       

 748                 

 749         $paginationTop = new CPagination($totalItemCount);

 750         $paginationTop->pageVar = 'page';

 751         $paginationTop->pageSize= 10;

 752         $paginationButtom = clone $paginationTop;

 753       
  $dataProvider = new CArrayDataProvider($IDARRAY, array(

 754             'keyField'=>false,
 755         ));
 756         
 757         $this->render('sourceListMore', array(
 758             'dataProvider'=>$dataProvider,
 759             'paginationTop'=>$paginationTop,
 760             'totalItemCount'=>$totalItemCount,
 761             'paginationButtom'=>$paginationButtom,
 762         ));
来看下

$dataProvider = new CArrayDataProvider($IDARRAY, array(

object(CArrayDataProvider)#37 (10) {
  ["keyField"]=>
  bool(false)
  ["rawData"]=>
  array(456) {
    [0]=>
    array(2) {
      ["site_name"]=>
      string(0) ""
      ["count"]=>
      int(3046)
    }
    [1]=>
    array(2) {
      ["site_name"]=>
      string(9) "易车网"
      ["count"]=>
      int(904)
    }
    [455]=>
    array(2) {
      ["site_name"]=>
      string(9) "科技讯"
      ["count"]=>
      int(1)
    }
  }
  ["_id":"CDataProvider":private]=>
  NULL
  ["_data":"CDataProvider":private]=>
  NULL
  ["_keys":"CDataProvider":private]=>
  NULL
  ["_totalItemCount":"CDataProvider":private]=>
  NULL
  ["_sort":"CDataProvider":private]=>
  NULL
  ["_pagination":"CDataProvider":private]=>
  NULL
  ["_e":"CComponent":private]=>
  NULL
  ["_m":"CComponent":private]=>
  NULL
}

OK ,成功,其实用着样的方法,比用SQL 是不是要方便很多?



但是应该适用于,GridView中 column没几个的情况。

如果有很多Column,一般都是某个数据表的数据要展示,当然就用CActiveRecord

$rawData= model_applicant::model()->findAllBySql($sql,array('kId'=>$KDValue));

用数组array代替CActiveRecord构建CArrayDataProvider的更多相关文章

  1. 数组 array 矩阵 list 数据框 dataframe

    转自 :  http://blog.csdn.net/u011253874/article/details/43115447 <span style="font-size:14px;& ...

  2. 数组array的常用方法简介

    数组方法简介 数组总共有22种方法,本文将其分为以下几类来进行详细介绍. 原数组变化:push() pop() shift() unshift() reverse() sort() splice() ...

  3. Java ArrayList和Vector、LinkedList与ArrayList、数组(Array)和列表集合(ArrayList)的区别

    ArrayList和Vector的区别ArrayList与Vector主要从二方面来说.  一.同步性:   Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步 ...

  4. go 数组(array)、切片(slice)、map、结构体(struct)

    一 数组(array) go语言中的数组是固定长度的.使用前必须指定数组长度. go语言中数组是值类型.如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址. 声明 ...

  5. javascript类型系统——数组array

    × 目录 [1]创建 [2]本质 [3]稀疏[4]长度[5]遍历[6]类数组 前面的话 除了对象之外,数组Array类型可能是javascript中最常用的类型了.而且,javascript中的数组与 ...

  6. swift基本用法-数组array

    数组简单用法 //------------------------------------------------------------------------------ // 1. 数组定义 / ...

  7. C#中数组Array、ArrayList、泛型List<T>的比较

    在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...

  8. Javascript基础系列之(四)数据类型 (数组 array)

    字符串,数值,布尔值都属于离散值(scalar),如果某个变量是离散的,那么任何时候它只有一个值. 如果想使用变量存储一组值,就需要使用数组(array). 数组是由多个名称相同的树值构成的集合,集合 ...

  9. AS3 - 数组Array的几个常用方法(附样例)

    AS3 - 数组Array的几个常用方法(附样例) 2015-03-30 10:39发布:hangge浏览:241   Flex/Flash开发中,经常会使用到数组,下面总结了一些数组的常用方法. 1 ...

随机推荐

  1. TPL异步并行编程之任务超时

    此处参考自阿涛的博文:http://www.cnblogs.com/HelloMyWorld/p/5526914.html 一 自己定义 基本的思路: net中异步操作由于是交给线程来实现,因此不可能 ...

  2. Linux Shell常用技巧(一) RE

    一.    特殊文件: /dev/null和/dev/tty Linux系统提供了两个对Shell编程非常有用的特殊文件,/dev/null和/dev/tty.其中/dev/null将会丢掉所有写入它 ...

  3. 【Node.js 自己封装的库 http_parse, libuv】

    [Node.js 自己封装的库 http_parse, libuv] Node.js 介绍:一个网络框架,更多:http://www.oschina.net/p/nodejs 官网:http://no ...

  4. php中如何开启GD库

    php中开启GD库 在浏览器输入启用wamp下的GD库(否则验证码可能不能用) D:\lamp\php\php.ini 文件

  5. poj3621 Sightseeing Cows --- 01分数规划

    典型的求最优比例环问题 參考资料: http://blog.csdn.net/hhaile/article/details/8883652 此题中,给出每一个点和每条边的权值,求一个环使 ans=∑点 ...

  6. POJ 1724 ROADS(bfs最短路)

    n个点m条边的有向图,每条边有距离跟花费两个参数,求1->n花费在K以内的最短路. 直接优先队列bfs暴力搞就行了,100*10000个状态而已.节点扩充的时候,dp[i][j]表示到达第i点花 ...

  7. 经常使用Firefox插件大全

    Web开发者经常使用的火狐插件 1)FireShot:是一个截图工具,来源于截图软件Screenshot Studio的开发商,是一个Firefox扩展或者说是Firefox版的Screenshot ...

  8. Java程序猿之从菜鸟到职场高手的必看

    J2SE之入门引导            Java基础系列之初识JAVA                                           Java基础系列之Java语法       ...

  9. bash学习之环境变量

    1.查看系统存在的环境变量env 和 export env命令:查看环境变量 [CJP@CJP ~]$ env HOSTNAME=CJP SHELL=/bin/bash HISTSIZE=1000 U ...

  10. hdu1292(递推dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1292 分析:    i代表人数,j代表组数,有dp[i][j]=dp[i-1][j-1]+dp[i-1 ...