免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1588 | 回复: 0
打印 上一主题 下一主题

解剖SUGARCRM中的ListView类 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-02-28 11:10 |只看该作者 |倒序浏览

                                               
SugarCRM列表的实现原理的核心是ListView类。下文将根据一个实例来解剖ListView类。
1)$ListView = new ListView();
2)$ListView->initNewXTemplate('modules/Documents/DocumentRevisionListView.html',$mod_strings);
3)$ListView->setQuery(" document_id = '$focus->id'",""," document_revisions.date_entered desc","");
4)$ListView->setHeaderTitle($mod_strings['LBL_DOC_REV_HEADER']);
5)$ListView->processListView($revision, "main", "DOCREVISION");
以上代码是文档模块的文档列表的实现代码。
1)    是创建一个ListView实例,和Java创建实例一样;
2)    初始化模版(XTemplate);
3)    设置where条件(setQuery的第一个参数)和设置排序字段(setQuery的第三个参数);
4)    设置列表页面的标题;
5)    调用processListView方法,$revision是document模块的bean的实例,main是
DocumentRevisionListView.html中的板块名称,DOCREVISION是用来存取SESSION里有关document模块
相关的信息。
在processListView方法里,首先处理massUpdate(批量更新)的操作,然后调用processListViewTwo方法;
在processListViewTwo这个方法里,首先调用processSugarBean,返回查询得到的记录List,然后处理排序和
Orderby等问题,接着调用processListRows($list,$xTemplateSection,
$html_varName)方法显示得到的记录;
在processSugarBean方法里,调用seed(模块bean的实例)的get_list方法获取list,在get_list方法里调用
seed的create_list_query(create query sql)和process_list_query;
在process_list_query方法里,根据查询语句和vardefs.php定义的field_defs从数据库取值并赋值给seed对应的变
量,然后调用seed的fill_in_additional_list_fields方法取得没有在vardefs.php定义的字段或者变量,如果需
要把这些额外的变量赋给列表上的变量(DocumentRevisionListView.html列表中定义的,但没有在vardefs.php定义的
变量),需要在get_list_view_data方法返回的数组里添加这些额外的变量以及额外变量对应的KEY,即
DocumentRevisionListView.html模版定义的变量。
在processListRows方法里,循环DataList,在循环里,调用aItem的
$aItem->check_date_relationships_load();进行日期格式处理(gmdate和date的处理)
然后调用$fields =
$aItem->get_list_view_data();在get_list_view_data里,把bean的字段变为大写作为KEY,对
应值作为value,把key-value放在数组里赋给DocumentRevisionListView.html模版里的变量
DOCREVISION(模块名的大写)。
get_list_view_data是在fill_in_additional_list_fields之后被调用的,这两个函数一般都需要子类覆盖
SugarBean的这两个方法,特别是fill_in_additional_list_fields方法,SugarBean里是空的,什么操作都没
有,需要子类实现。
注意:模版文件里定义的需要显示的变量需要与数据库表的字段一样,一般在模版里是大写,modulebean定义的表结构变量是小写。
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/32407/showart_251070.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP