在DotNetNuke中利用Reports模块拼凑数据(二)
在(一)中,我们描述了如何在一分钟之内(如果你SQL语句足够熟练的话),将已有的数据重新打乱、组合、排列,等等,Whatever you want,总之,是用已有的数据,组合成一个新的数据模块。我们介绍了Reports,这个模块非常方便,也极其简单,就是把我们用SELECT语句选择出来的列,全部都放在一个模块之内,其实,这就是一个非常开放的模块、也非常好用的模块,如果我们自己开发的模块,可以达到这种效果的话,那么,应该就算是非常成功了。 Reports的新版(大概是4.0以后的版本,07年的版本还无此功能),已经可以定义Visualizer了,也就是列表的显示方式也是开放的,可以用一般的Grid,也可以用更为丰富的显示模式,比如我们自己定义的一个XSL文件或者HTML文件来解析数据。这样的扩展非常好,我的RedstartForm模块在编辑界面上可以由用户自行建立ascx文件,实现动态的展现;但是列表界面还没有做到,希望可以将这个特性引入进来。 不但是Reports模块,UDT模块也早就有了可以扩展的列表样式,用户可以自行定义;不过遗憾的是UDT的Edit界面还不是动态的,希望新版的UDT,也就是Forms & List在这方面可以加强。 在(一)中提到,可以读取当前用户的一些“待办”的信息,敏感的读者会问:用户的信息在哪里呢? 是的,这也就是Reports的参数,Reports已经提供了部分参数,如下面的语句中展示的:
只有靠模块提供的参数,我们才能去“识别”一些动态的信息,比如:当前登录的用户、当前的模块、页面等等,只有四个,当然有点少,不过,既然我们可以自己在模块的配置中自行编写SQL语句,那么,有了UserID,原则上就可以知道所有的用户信息了。 我们假设有一个Reports模块,是现实当前用户的一些数据的,那么,我们就可以在页面上增加一个Reports模块,然后,其SQL语句这样编写: SELECT * FROM Users WHERE UserID= 大家有兴趣的话可以自己试一下,就可以出现如下的运行结果: 这就是一个最简单的利用参数的例子了;当然,Title都是E文的,用AS给一个中文的字段就可以了;一大堆没有的字段,那么,在SELECT的时候,指定只选择固定的字段就可以了,如: SELECT DisplayName AS 名称 FROM Users WHERE UserID=@UserID 类似的参数运用,我们还可以在IFrame模块中看到,IFrame支持的参数更多一些,大家请看一下下图: 下拉列表中,就是IFrame模块提供给用户的参数。很多是吗?嗯,那是因为在IFrame模块中,就不能写SQL语句去读取其他的内容了,所以,能列出来的就尽量列出来;不过,在我使用IFrame模块的时候,仍然改动了代码,为之增加了PortalAlias这个参数(原本的IFrame模块是没有这个参数的)。之所以增加这个参数,是为了访问本机上的另外一个Web系统(非DotNetNuke)。为什么要增加这个参数呢?因为我的系统可能是被用户从局域网访问的,也可能是被用户从互联网访问的;可能是用户从IP地址访问的,也可能是用户从机器名访问的(在 Host的“网站设置——网站管理——域名绑定”中绑定了所有的可能),这个时候,如果用户从局域网里面访问DotNetNuke,但是IFrame嵌套的Web系统却走固定的互联网地址的话,就不太好了,所以,增加了一个PortalAlias的参数,当然,这个是另外的一个话题了。 在我开发RedstartForm这个工作流模块的时候,也用到了参数,但是,我的参数却是这样定义的:{UserID} {ModuleID},也就是用大括号将之括起来,在括号之中的才识别为参数,而在括号之外的则不识别为参数,在这里,我有我的考虑,等到时机成熟的时候,我们再介绍那个模块的参数处理机制。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |