当需要构建 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. LIS问题分析

    题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号"待字闺中" 原题这个LIS问题,可不是Longest Increasing Subsequence,而是Large ...

  2. Craig可能是个冲浪爱好者

    最近有个叫Dweeb的Mac管理员,在他的blog中声称发现,主管OS X和iOS等软件产品的苹果资深副总裁Craig是一个冲浪爱好者.他通过对6月10日的苹果WWDC发布会视频的研究,指出Craig ...

  3. Lucene.Net 2.3.1开发介绍 —— 三、索引(七)

    原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(七) 5.IndexWriter 索引这部分最后讲的是IndexWriter.如果说前面提到的都是数据的结构,那么IndexWriter ...

  4. 与众不同 windows phone (15) - Media(媒体)之后台播放音频

    原文:与众不同 windows phone (15) - Media(媒体)之后台播放音频 [索引页][源码下载] 与众不同 windows phone (15) - Media(媒体)之后台播放音频 ...

  5. Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)

    题目链接:Codeforces Round #275 (Div. 2) C - Diverse Permutation 题意:一串排列1~n.求一个序列当中相邻两项差的绝对值的个数(指绝对值不同的个数 ...

  6. Ajax 下拉列表联动显示

    一般处理程序文件 代码 using System;using System.Web;using System.Linq;using System.Data.Linq;using System.Text ...

  7. 与众不同 windows phone (21) - Device(设备)之摄像头(拍摄照片, 录制视频)

    原文:与众不同 windows phone (21) - Device(设备)之摄像头(拍摄照片, 录制视频) [索引页][源码下载] 与众不同 windows phone (21) - Device ...

  8. 引用类中的enum

    引用类中的enum 引用类中的enum,需要加类的域class_name::value_in_enum_name 点击(此处)折叠或打开 #include <stdio.h> #inclu ...

  9. C语言信号学习笔记

    在C语言中,对于错误有很多处理方式.然而,今天学习了信号处理,感觉这种处理方式十分灵活,特此记录. 关于信号处理的函数包含于头文件<signal.h>中.所谓的信号,多指出乎程序员意料的行 ...

  10. thinkPHP 空模块和空操作、前置操作和后置操作 详细介绍(十四)

    原文:thinkPHP 空模块和空操作.前置操作和后置操作 详细介绍(十四) 本章节:介绍 TP 空模块和空操作.前置操作和后置操作 详细介绍 一.空模块和空操作 1.空操作 function _em ...