leeyee
问题解决了
就是 keyField 设置问题。
$dataProvider = new CArrayDataProvider($userlist,array( 'keyField'=>false, ));
这样设置就可以了,页面正常显示。
yii里面关于CArrayDataProvider的 代码注释
/** * @var string the name of key field. Defaults to 'id'. If it's set to false, * keys of $rawData array are used. */ public $keyField='id';
设置keyField 为false 将使用 rawData的数组里的keys。
修改了 在构造 CArrayDataProvider 处的代码
$dataProvider = new CArrayDataProvider($userlist,array( 'keyField'=>false, ));
但还是报错。。
好像感觉是 CArrayDataProvider 的 keyFeild 设置问题。
直接修改了 CArrayDataProvider 的 fetchKeys()方法
protected function fetchKeys() { if($this->keyField===false) return array_keys($this->rawData); foreach($this->getData() as $i=>$data) { $keys[$i]='user_id'; } //$keys[$i]=is_object($data) ? $data->{$this->keyField} : $data[$this->keyField]; return $keys; }
显示正常了。。。不是很明白 这个keyField 在 CArrayDataProvider的构造函数中 怎么设置。。
这个CArrayDataProvider要 自己重载???