简述Yii 的CGridView如何使用及怎么用model的search搜索
来源:互联网 发布:mac硬盘默认名称 编辑:程序博客网 时间:2024/04/27 20:06
Yii的CGridview挂件可以自动生成数据列表,很适合在后台管理页面使用。
但Yii的文档还是很缺乏,只能在 class reference 中找到一些简单的说明,可并不直观。在这里总结下CGridview的用法。
在模板页面中,可以这样来使用CGridview:
01
$this->widget('zii.widgets.grid.CGridView', array(
02
'dataProvider'=>$dataProvider,
03
04
'selectableRows' => true,
05
06
//'selectionChanged' => '',
07
08
//'emptyText' => 'it is empy',
09
10
//'actionPrefix' => '', //作用还不明确
11
12
//'ajaxVar'=>'', //作用还不明确
13
14
//ajaxUpdate => true,
15
16
//'beforeAjaxUpdate' => '', //作用还不明确
17
18
//afterAjaxUpdate => 'string', //作用还不明确
19
20
//'enablePagination' => true,
21
22
//'enableSorting' => true,
23
//'hasFooter' => true,
24
25
//'hiddenHeader' => false,
26
27
//'pager'=>'',
28
'columns'=>array(
29
'title', // display the 'title' attribute
30
'category.name', // display the 'name' attribute of the 'category' relation
31
'content:html', // display the 'content' attribute as purified HTML
32
array( // display 'create_time' using an expression
33
'name'=>'create_time',
34
'value'=>'date("M j, Y", $data->create_time)',
35
),
36
array( // display 'author.username' using an expression
37
'name'=>'authorName',
38
'value'=>'$data->author->username',
39
),
40
array( // display a column with "view", "update" and "delete" buttons
41
'class'=>'CButtonColumn',
42
),
43
),
44
));
dataProvider参数:
接收来自CActiveDataProvider的数组,每个数组元素都是一个当前table的model。
gii自动生成的Model类中自带一个search()方法,rules()方法的规则数组中最后一个规则也是和search有关的,这些是为了方便在controller中对数据进行筛选或者说搜索,而CGridview正可以利用Model的这些特性。dbProvider接收的值可以直接是:
'dataProvider'=>$model->search()
一个简单的例子:
controller的方法
01
function actionList()
02
{
03
04
$model = new Member('search');
05
06
if(isset($_GET['Member']))
07
08
{
09
10
$model->attributes = $_GET['Member'];
11
12
}
13
14
$this->render('list',array('model'=>$model));
15
16
}
view视图的内容
01
<html>
02
03
<head></head>
04
05
<body>
06
07
<?php
08
09
$this->widget('zii.widgets.Grid.CGridView',array(
10
11
'dataProvider' => $model->search(),
12
13
'filter' => $model,
14
15
'filterPosition' => 'header', //
16
17
'columns' => array(
18
19
'name',
20
21
'email',
22
23
),
24
25
));
26
27
?>
28
29
</body>
30
31
</html>
视图中CGridview的参数filter,他的值应该是当前table的Model,如果filter获得了赋值,则这个CGridview可以对数据进行筛选搜索了;filterPosition可以有三个值,header/body/footer,用来控制字段的搜索输入框显示在列的头部、中部还是尾部,如果为空,则不会显示系统自带的这个搜索输入框。说实话CGridview自带的这个输入框有点太不人性化了,一点也不像常见搜索表单,所以我建议不要显示系统自带的搜索框,而是自行写一个搜索框,最简单像这样:
01
<input type="text" name="Member[name]" id="Member_id">
02
03
<input type="button" value="搜索" onclick="submitSearch('<?=url($this->route)?>','Member','name')">
04
05
<script type="text/javascript">
06
07
function submitSearch(url,model,id)
08
09
{
10
11
var value = document.getElementById(model+'_'+id).value;
12
13
document.location.href = url + '&' + model + '['+ id + ']=' + value;
14
15
}
16
17
</script>
如果还要实现ajax的功能可以自行对代码进行一些小修改即可。
emptyText参数
当一条数据也没有获取到时,就会显示这个参数设定的提示信息,如“没有找到任何数据”
ajaxUpdate参数:
是否启用CGridview的ajax操作效果,如果设为true,删除、排序这些操作会自动以ajax方式来实现
enablePagination 参数
是否启用分页
enableSoring 参数
是否启用数据排序功能
hasFooter 参数
CGridview的表格是否有脚部
hiddenHeader 参数
是否隐藏CGridview表格的头部
pager参数
pager类显示时用到的参数
selectableRows参数
是否在每行数据行首显示一个checkbox以及一个全选checkbox
selectionChanged参数
当数据选中状态变化后要调用执行的js函数
showTableOnEmpty参数
当没有数据时,是否显示CGridview表格
summaryText参数
显示的摘要信息
- 简述Yii 的CGridView如何使用及怎么用model的search搜索
- Yii的Model ( 模型)创建及使用
- yii的Model ( 模型)创建及使用
- Yii的Model ( 模型)创建及使用
- Yii的Model ( 模型)创建及使用
- Yii中CGridView单元格组件和数据提供者的使用
- Yii使用renderPartial绘制的CGridView中checkall功能无效
- Yii CGridView使用
- Yii:如何在CGridView列表控件使用了Ajax方式更新数据的情况下返回前一个页面
- 解决yii的CGridView在高级搜索选项过多时点分页后php崩溃的情况
- 自定义 Yii CGridView Column 的显示
- Yii框架中CGridView的使用方法
- yii的CListView和CGridView之分页
- Yii CGridView的内联列编辑
- yii CGridView 分页 初始化 js的方法
- Yii: 如何在CGridView组件中根据不同的记录行数据显示不同的操作
- Yii: 如何把JS脚本添加到CGridView数据行的操作按钮中
- Yii中CGridView使用心得
- POJ2570 Fiber Network floyd传递闭包
- 2011_08_31_看雪重要学习网址保存
- 一步一步学Silverlight 2系列文章
- Enterprise Library系列文章回顾与总结
- 内存泄漏的原因
- 简述Yii 的CGridView如何使用及怎么用model的search搜索
- Java's Thread——Thread class and Runnables
- 链栈的实现(单指针 无头结点) C语言版
- YII框架 CGridview显示字段上面加LINK
- POJ2227 The Weding Juicer——堆的应用
- VB中的Dictionary对象
- Oracle面试题集锦-技术篇
- 大小端存储模式
- 链栈的实现(双指针 带头结点) C语言版