select
( select
count(*)
from
_Attachment
where
tf_moduleId = '7010'
and tf_moduleIdValue = _t7010.tf_provinceId ) as tf_attachmentCount ,
getAttachmentNames( '7010',
_t7010.tf_provinceId ) as tf_attachmentTooltip ,
_t7010.tf_provinceId as tf_provinceId ,
_t7010.tf_name as tf_name ,
_t7010.tf_shortname as tf_shortname ,
_t7010.tf_district as tf_district ,
_t7010.tf_area as tf_area ,
_t7010.tf_numberOfPeople as tf_numberOfPeople ,
_t7010.tf_GDP as tf_GDP ,
( _t7010.tf_GDP / _t7010.tf_numberOfPeople) as tf_averageGDP ,
_t7010.tf_percent as tf_percent ,
_t7010.tf_isMunicipality as tf_isMunicipality ,
_t7010.tf_createDate as tf_createDate ,
( (datediff(now(),
_t7010.tf_createDate))) as tf_days ,
_t7010.tf_orderId as tf_orderId ,
_t7010.tf_map as tf_map ,
_t7010.tf_remark as tf_remark ,
_t7010.tf_auditingName as tf_auditingName ,
_t7010.tf_auditingDate as tf_auditingDate ,
_t7010.tf_auditingRemark as tf_auditingRemark ,
_t7010.tf_auditinged as tf_auditinged ,
_t7010.tf_inputmen as tf_inputmen ,
_t7010.tf_inputdate as tf_inputdate ,
( select
count(*)
from
City _t7012
left outer join
Province _child_t7010
on _child_t7010.tf_provinceId = _t7012.tf_provinceId
where
(
(
_child_t7010.tf_provinceId=_t7010.tf_provinceId
)
) ) as C_City
from
Province _t7010 limit ?
在上面可以看到select后的第一个字段就附件个数的字段 tf_attachmentCount ,这一个比较好理解。第二个字段稍微有些意思,他返回的是附件的tooltip值,就是上面图片中的那4条记录,前面是附件的名称,后面跟着附件的文件名。这个功能是用自定义函数来完成的。函数的完整代码如下:这个函数入口参数有二个,一个是模块id,一个是记录id,返回的是一个字符串,里面把该记录的所有的附件的名称和文件名都加进去了。CREATE DEFINER=`root`@`localhost` FUNCTION `getAttachmentNames`(
moduleid varchar(10) ,
keyid varchar(50)) RETURNS varchar(4000) CHARSET gb2312
BEGIN
DECLARE pid INT(11);
DECLARE ptitle VARCHAR(50);
DECLARE pfilename VARCHAR(250);
DECLARE presult VARCHAR(4000) DEFAULT '';
DECLARE done INT DEFAULT FALSE;
DECLARE cur CURSOR FOR
SELECT tf_attachmentId , tf_name ,tf_filename
FROM _Attachment
WHERE tf_moduleId = moduleid AND tf_moduleidvalue = keyid;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
SET presult = '<ol class=\'gridcelltooltip\'>';
OPEN cur;
read_loop : LOOP
FETCH cur INTO pid , ptitle , pfilename;
IF done THEN
LEAVE read_loop;
END IF;
IF pfilename is null THEN
SET presult = concat( presult ,'<li>', ptitle ,'</li>');
ELSE
SET presult = concat( presult ,'<li>', ptitle , '(', pfilename, ')</li>');
END IF;
END LOOP;
SET presult = concat(presult ,'</ol>');
CLOSE cur;
RETURN presult;
END/**
* 具有附件的模块的显示附件个数的grid字段,可以显示附件的个数和tooltip,单击可以直接进入到此记录的附件列表及显示
*
*/
Ext.define('app.module.widget.column.AttachmentNumberColumn',
{
extend : 'Ext.grid.column.Column',
alias : 'widget.attachmentnumbercolumn',
dataIndex : 'tf_attachmentCount',
text : '<span class="fa fa-paperclip"></span>',
tooltip : '附件数',
align : 'center',
menuDisabled : true,
sortable : true,
resizable : false,
locked : true,
width : 36,
renderer : function(val, metaData, model, row, col, store, gridview) {
if (val) {
metaData.tdAttr = 'data-qtip="' + model.get('tf_attachmentTooltip')
+ '"';
var result = '<span class="attachmentColumnNumber">'
+ (val > 9 ? val : '0' + val) + '</span>';
return result;
}
},
processEvent : function(type, view, cell, recordIndex, cellIndex, e,
record, row) {
if (type === 'click') {
// 如果鼠标是在附件个数上面点击的
if (e.getTarget().className === 'attachmentColumnNumber') {
// 打开浏览和管理附件的页面
app.mainRegion.addParentFilterModule('_Attachment',
record.module.tf_moduleName, record.get(record.idProperty),
record.getTitleTpl(), {
showAdditionView : true
});
}
}
}
})
常规功能和模块自定义系统 (cfcmms)—021自定义grid列(5附件列)
原文:http://blog.csdn.net/jfok/article/details/50189073