Subscribe: 博客园-专业BI, SharePoint, 工作流系统解决方案实施团队
http://jasper.cnblogs.com/rss.aspx
Added By: Feedage Forager Feedage Grade B rated
Language: Chinese simplified
Tags:
archive  cnblogs jasper  cnblogs  jasper archive  jasper  server  sharepoint 工作流  sharepoint  工作流  本文链接:http cnblogs 
Rate this Feed
Rate this feedRate this feedRate this feedRate this feedRate this feed
Rate this feed 1 starRate this feed 2 starRate this feed 3 starRate this feed 4 starRate this feed 5 star

Comments (0)

Feed Details and Statistics Feed Statistics
Preview: 博客园-专业BI, SharePoint, 工作流系统解决方案实施团队

博客园_专业BI, SharePoint, 工作流系统解决方案实施团队





Updated: 2010-09-03T02:28:08Z

 



BI企业报表门户软件公测 - Jasper

2010-09-03T02:28:00Z

一直以来,我们给客户实施BI项目时,都会遇到一个问题,报表的最终展现采用什么方式?虽然SSRS可以来做单独的报表,但是客户基本上不认可直接使用SQL Server Report Server来做为展示平台。常用的解决方法(也根据客户需求来定),一是采用SharePoint,将每一张报表都集成到SharePoint中,并且组织好,这个方法需要客户投入比较多的钱来购买SharePoint;另外一种就是...

一直以来,我们给客户实施BI项目时,都会遇到一个问题,报表的最终展现采用什么方式?虽然SSRS可以来做单独的报表,但是客户基本上不认可直接使用SQL Server Report Server来做为展示平台。

 

常用的解决方法(也根据客户需求来定),一是采用SharePoint,将每一张报表都集成到SharePoint中,并且组织好,这个方法需要客户投入比较多的钱来购买SharePoint;另外一种就是采用ASP.NET开发一个报表门户,提供给客户使用。

 

这2种方法,我们都做过很多,也掌握了很多经验。在此过程中,我们推出了自己的BI报表门户软件,采用的就是第2种方法。

 

今天的帖子就是将这个软件上线公测, 找到其中更多的优秀和不足的地方,将之改进的更好。

软件我们命名为Report Server Portal,主要是由于软件本身是基于SQL Server BI的,集成了Reporting Services, Analysis Services。

 

通过软件,我们可以提供给客户以下东西:

  • 美观大方的界面,便捷的操作
  • 带参数的私人报表收藏夹
  • 共享的带权限控制的公用文件夹
  • 支持下钻的OLAP解决方案,OWC多维分析报表(需要在客户端安装OWC或者Office,以及将网址放入可信站点,将可信站点的安全级别降为低)
  • Reporting Services的集中权限管理
  • Analysis Services的数据级权限管理(请参考的我另一篇文章《》)
  • 多语言支持
  • 支持SQL Server 2005 和 2008
  • 采用域集成认证

这些是基本的介绍,我把软件部署在一台服务器上,以供外部访问(请注意,服务器性能一般,可能的话,尽量不要集中访问)

 

如果您是从事SQL Server BI领域的人员或者您对SQL Server BI感兴趣,欢迎来体验下。

 

最终,最重要的东西,网址!http://www.reportportal.cn 

 

体验帐号:biuser1, biuser2, biuser3

密码:bi 

 

也请帮忙不要修改密码,这样会导致其他人无法使用。谢谢! 

(image)

本文链接:http://www.cnblogs.com/jasper/archive/2010/09/03/1816766.html,转载请注明。




[BI] 通用数据级权限控制解决方案的实现(二):Cube中的角色设置与数据级权限控制 - Jasper

2009-07-28T03:23:00Z

BI数据分析是目前企业的热门应用,如何用一种通用的方法来进行Cube的数据级别的权限控制呢?在上一节中,我们讲述了如何在Cube中加入一个自定义的控制数据级别权限的DLL,这一节将讲述如何使用这个DLL来控制数据级的权限。
上一篇文章说了如何写一个控制数据级权限的DLL,并且放到Cube中去。那么这个DLL放到Cube里了,怎么让他起作用呢?这就是我们这节要讲述的内容了。

用一句话概括说,在Analysis Services中,我们是通过控制角色的维度数据,来让上一节的DLL起作用的。那么具体如果操作呢?

首先我们先建立一个角色,角色名字是无所谓的,在这里我们将之称为DataSecurity。如下图所示:
(image)

创建好了角色之后,就出现了在上节中“老南瓜”同学关心的问题了。是不是我们需要针对每种类型的访问用户都建立一个角色,再把相应的用户加入到角色中去呢?

这个想法,想想都让我害怕,那么多的人,那么多的不同的访问权限,我要设置多少个角色啊。。。我肯定会为了这个忙死,烦死;可是我又是一个懒人,有什么办法可以让我轻松点呢?

答案就是:你只需要建立一个角色,然后呢把everyone加入到这个角色中。没错!你看到的就是everyone!这就意味着所有人都可以访问到Cube里数据了。

这下问题又来了,怎么可能?所有人都看到Cube数据,老板还不杀了我?机密数据都被人看见了。。。

呵呵,那么这个有着everyone成员的角色DataSecurity究竟是靠怎样的魔力来控制数据级别的权限呢?

我们再仔细想一想,好像漏掉了什么?对了,就是我们上一节开发成功的DLL,到目前为止,我们还没有用上这个DLL,他就是控制数据级别权限的关键所在。

如何在DataSecurity角色中用上这个DLL来控制数据级别的权限呢?让我们先打开DataSecurity角色的维度数据。
(image)

在角色的维度数据里,提供了一个Allowed member set的设置,这可是个高级货哦。
比如我们要控制Account维度的Accounts的数据级别权限,我们在界面上选择好Account这个维度,然后选择Accounts这个属性,再接着点"Advanced",在下面的Allowed member set对话框就是我说的这个高级货!

这个地方,就是我们调用上一节写好的DLL的地方。也是我们控制数据级权限的地方。所有人都能访问到Cube不要紧,没有权限的人通过这个高级货一转,就啥也看不到了。。。

让我们看看,怎么来设置这个高级货:我们放一个如下的字符串:
StrtoSet(BI.DataSecurity.GetDimensionSet(USERNAME, "[Accounts]", "[Account].[Accounts].AllMembers"))

StrToSet是把字符串转换为Member Set。BI.DataSecurity.GetDimensionSet是调用我们上一节写的函数。这个调用规则是:[DLL Name].[Namespace].[Class].[Function],参数呢:USERNAME就是访问者的域账号,就是这个参数控制住了everyone能看到哪些东西。其他的参数都是自己写的,根据自己的需要来写。我们这里的第二个参数,就是说,这个函数会返回访问者在"Accounts"这个属性下能够访问的维度数据;第三个参数是一个默认设置,表示如果数据库中没有查到任何结果,就默认表示他能够看所有的数据,这个默认设置可以根据你自己的需要来改,你也可以说,默认就看不到任何数据。

另外一个要注意的地方就是:我们要钩选上那个"Enable Visual Total",这个会只在数据权限范围内做数据的统计和汇总。

到了这一步,我们就完成了后台的所有设置,但是还少了很重要的一块,用户能够访问哪些数据怎么记录下来?这个我们将在后面继续说明。

我们弄个图示,简单说明下这2步的工作原理:
(image)

从图示中也可以看出,还有很重要的一步需要我们继续努力,就是如何去设置用户的授权数据。这个部分,请听下回分解哈。
(image)

本文链接:http://www.cnblogs.com/jasper/archive/2009/07/28/1532821.html,转载请注明。




[BI] 通用数据级权限控制解决方案的实现(一):Cube中的自定义DLL - Jasper

2009-07-13T06:29:00Z

BI数据分析是目前企业的热门应用,而对企业来说,进行权限控制是必须而且非常重要的,尤其是作为决策用的企业报表。在BI解决方案中,权限控制又分为2种:一种是报表级权限控制,这类型权限控制没有什么好讲的,报表系统都本身就支持了。另一种比较复杂的就是数据级权限控制,所谓的数据级权限控制,就是用户只能看自己权限范围内的数据以及这些数据的统计结果。比如一个大型公司的华南区销售主管就不能看到华北区的销售数据和统计结果;虽然华南区主管和华北区主管都是浏览同一张销售报表,但是该报表上出来的数据结果却不一样。本系列文章主要讲述基于SSAS的通用数据级权限控制解决方案。BI数据分析是目前企业的热门应用,而对企业来说,进行权限控制是必须而且非常重要的,尤其是作为决策用的企业报表。在BI解决方案中,权限控制又分为2种:一种是报表级权限控制,这类型权限控制没有什么好讲的,报表系统都本身就支持了。另一种比较复杂的就是数据级权限控制,所谓的数据级权限控制,就是用户只能看自己权限范围内的数据以及这些数据的统计结果。比如一个大型公司的华南区销售主管就不能看到华北区的销售数据和统计结果;虽然华南区主管和华北区主管都是浏览同一张销售报表,但是该报表上出来的数据结果却不一样。 在这个系列里,我将讲述下基于微软的SSAS来实现通用的数据级权限控制解决方案。而SSRS不会在本文中涉及,因为SSRS是进行报表级权限控制的,与数据级权限的控制并没有关系。其实有数据级权限控制支持的报表,其报表级权限控制甚至都可以不需要,因为没有权限的用户看到的只是一片数据上的空白;当然了,从实际角度出发,还是需要做好报表级权限控制的。 基于SQL Server的BI解决方案中,数据级权限的控制会涉及如下内容:在SSAS的Cube中设置需要对哪些维度进行数据级权限控制提供给用户一个界面友好的控制台,让用户能够非常方便的做数据级权限控制的配置。为了更好的讲述数据级权限控制的效果,我们以一个实例来说明。在我们的Cube中有一个维度是"区域-城市-办公室",我们主要是控制该维度的数据级权限。区域分为:华南区、华北区、华东区、西南区、东北区;在效果上主要看对区域进行数据权限控制下的报表结果。 明白了我们的任务,首先开始的是如何在SSAS的Cube中作设置,让其支持我们的数据级权限控制。这个设置分为2部分:通过SSAS的自定义DLL来读取用户的权限设置,如果是我们的示例,就是读取用户是哪个区域的。创建一个新的角色,设置该角色的维度数据的自定义允许的结果集。第一步是开发一个.NET 类库,并且把这个类库部署到SSAS中,准备提供给第二步的设置中使用。其实这个类库的代码比较简单,一般都不会超过50行。我们来看看代码和简单的说明: Code    public class DataSecurity    {        // 返回用户有权限查看到的数据集字符串, 类似return "{[Location].[City].&[Seattle]}";        // domain_account:浏览报表的用户域帐号         // dimension:要查找的维度,实际为维度的Attribute        public static string GetDimensionSet(string domain_account, string dimension, string unique_name)        {      &nbs[...]



[SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(四):任务表单、流转的简要图示 - Jasper

2009-06-10T07:12:00Z

经过上3篇博客后,我们已经开发了这个工作流。不过用户的任务表单还没有。在任务表单里,我们将待审批的内容显示出来(对于重新提交,则为编辑方式),相对于InfoPath简单的链接方式(InfoPath提供一个审批信息的链接,审批者需要点链接来查看需要审批的内容),这种方式的用户体验更好。流程的流转过程,我们也通过一个简要的图示来展示。本节我们就来看看任务表单,以及简要的流转图示。

任务表单,是审批者看到的页面,我们在任务表单上把需要审批的信息显示出来。如果是退回给提交者修改的话,任务表单上会提供编辑保存功能。相对于InfoPath简单的链接方式(InfoPath提供一个审批信息的链接,审批者需要点链接来查看需要审批的内容),这种方式的用户体验更好。

1. 审批者看到的任务表单:

(image)

任务表单的显示分为2部分,上面一块内容为待审批的内容;下面则为所有的审批意见和用户输入的意见。

 

2. 重新提交的任务表单。当审批被拒绝后,需要提交者修改后重新提交。那么在任务表单里,就直接提供了编辑功能,不需要回到原始List去编辑。

(image)

 

3。流转的简要图示。整个流程的流转过程是怎么样的,需要提供给用户一个图形化的展现方式,在这个示例中,提供了一个表格方式的简要图示。

(image)

绿灯表示,在规定的时间内完成的审批;黄灯表示正在进行的步骤;没有灯的表示还没有开始的步骤。

 

OK。到这步为止,对这个通用工作流程的简要介绍就结束了。在后面的博客中,我们会介绍一些更加深入的工作流技术、BI内容。

(image)

本文链接:http://www.cnblogs.com/jasper/archive/2009/06/10/1500512.html,转载请注明。




[SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(三):工作流开发 - Jasper

2009-05-25T09:26:00Z

在上2篇博客中,我们有了工作流定义的列表,也有了关联表单和启动表单,现在就是开始开发这个通用工作流的时刻了。工作流的基本构成就是:一个While循环控制工作流的运转,While里的Task Replicator用来创建审批任务,至于应该创建哪一级的审批人,我们使用一个Step变量来控制。当Step==0时,表示需要提交者修改内容后重新提交。请看具体的逻辑图和流程图。在上2篇博客中,我们有了工作流定义的列表,也有了关联表单和启动表单,现在就是开始开发这个通用工作流的时刻了。工作流的基本构成就是:一个While循环控制工作流的运转,While里的Task Replicator用来创建审批任务,至于应该创建哪一级的审批人,我们使用一个Step变量来控制。当Step==0时,表示需要提交者修改内容后重新提交。首先,我们先来看看这个工作流的逻辑图:这是一个简单的逻辑图示,最终的工作流图会有所不同。从这个图中可以看出,我们是用代码在控制流程的流转。当Step为0时,表示需要提交者修改内容后,重新提交。当Step>0时,TaskReplicator(一个Replicator里放置一个TaskActivity)就创建这步的所有审批人,并且根据审批类型为投票还是并行来做结束判断。Code部分,根据Task的返回结果是通过还是拒绝,来决定Step++还是Step--。如果Step>总步骤数,那么流程结束。While退出。在这里,TaskReplicator的任务表单,我们都用同一个命名为Task1的User Control。而重新提交我们用命名为Task0的User Control。因为Task0会有稍许不同,Task0会直接提供修改原始List的表单,而不需要用户回到原始List中去做修改。有了这个逻辑关系图,我们来看看具体的工作流程图和一些关键代码:与逻辑图中稍许不同的就是,我们在Resubmit后加了一个Terminate Activity,这是为了让提交者可以终止掉这个流程。While循环后的Code Activity则是为了记录一些日志。有了上面的这个工作流程图,剩下的就需要一些变量来控制流程的流转了。比较重要的变量如下: Codepublic bool finished = false;     // While循环的结束条件public bool task_passed = false;  // Task Replicator是否是“通过”private int step = 1;             // 当前的步骤private int step_total = 0;       // 总步骤private string workflow_name = string.Empty;  // 工作流名称,用于去配置表中读取工作流定义private int vote = 0;                         // 用于投票类型的审批,当前投票通过的百分比public bool terminate = false;                // 用户是否终止提交工作流 有了这些变量,我们就可以设置While的结束条件,If-Else的分支条件了。重新提交If-Else这个分支的提交为step==0。工作流终止If-Else的分支条件为terminate。 接下来,我们来看看如何用代码控制流转了(这里面最重要的内容请看《[SharePoint 工作流] While里的Replicator ChildInitialized事件不执行的解决方法 》)1. 工作流的Activated事件:读取工作流的定义,设置TaskReplicator的InitChildData为第一步的所有审批人。CodeInitData data = WorkflowDataSerializer.DeserializeFromXmlString(workflowProperties.Initiat[...]



[SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(二):关联设置与启动设置 - Jasper

2009-05-22T08:33:00Z

承接上一篇《[SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(一):工作流定义 》, 现在我们有了工作流的定义, 接下来我们来看看工作流的关联设置, 启动设置是什么样.

承接上一篇[SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(一):工作流定义 , 现在我们有了工作流的定义, 接下来我们来看看工作流的关联设置, 启动设置是什么样.

1. 关联设置: 关联设置是在给List新增工作流的时候出现的,这里我们用到了User Control构建工作流技术,而没有采用InfoPath。可以看到采用User Control的能力是非常大的(如何使用User Control来构建工作流,我会放在后面弄一个系列来介绍,我们相信这个是SharePoint工作流技术中的一个重磅炸弹;关联,启动设置的含义也会在那里介绍)。

下图所示,我们首先可以选择使用定义好的哪个工作流(也就是从工作流设置List中读取数据),然后把这个工作流的流程图示在下面。

(image)

 

2. 启动设置:启动设置也是User Control,首先它会读取在关联设置中选择好的工作流, 并且图示化出来, 而且会把具体的审核人账号给提取出来.

然后申请人填写一些申请的说明就可以启动这个工作流了.

一般来讲,关联设置和启动设置的User Control区别不是很大,里面的很多代码是可以复用的。

(image)

 

了解了关联设置,启动设置;我们接下来就看看如何开发这个工作流了。

 

在BI,SharePoint,工作流领域,我们服务过众多的国际国内大企业:

1. 西门子中国:BI项目与SharePoint门户
2. Nokia:BI项目与SharePoint门户
3. 中国人寿:BI & 工作流
4. 与狼共舞:BI门户
5. 玫琳凯:BI项目
6. 美国微软:BI项目
等等
(image)

本文链接:http://www.cnblogs.com/jasper/archive/2009/05/22/1487204.html,转载请注明。




[SharePoint 工作流] 如何设计一个通用的多级多审核工作流程(一):工作流定义 - Jasper

2009-05-20T08:29:00Z

在我上一篇博客中,提到了设计一个通用的多级多审核工作流程. 所谓通用的,就是流程是从配置文件里获得,而不是在开发的时候就将流程定死.我想在接下来的几篇博客,就来讲讲这种类型流程的设计原理, 以及可以达到的效果.那么, 作为第一篇博客, 首先要先讲的就是我们这个流程配置是如何定义的. 我们使用3张SharePoint List来放置流程的定义。

在我上一篇博客中,提到了设计一个通用的多级多审核工作流程. 所谓通用的,就是流程是从配置文件里获得,而不是在开发的时候就将流程定死.

我想在接下来的几篇博客,就来讲讲这种类型流程的设计原理, 以及可以达到的效果.

那么, 作为第一篇博客, 首先要先讲的就是我们这个流程配置是如何定义的. 我们使用3张SharePoint List来放置流程的定义。当这个配置是可以多种形式的,Workflow Foundation的配置就是XML文件。

我们先来看看这3张List:

1。工作流设置List,记录了工作流的名称,步骤总数等信息。

(image)

 

2。工作流步骤设置List,记录了工作流的每步名称、类型(并行或者投票)等具体的步骤信息

(image)

3。工作流步骤审批人设置List,记录了每步的审批人。这里审批人,可以结合客户的HR系统,从组织架构中来获得最终的审批人。

(image)

 

通过这里的3张List,我们就定义好了一个叫做“请假签批流程“的工作流。

那么,由于是通用的工作流程,你可以定义多个工作流。你可以定义一个有5步的工作流,也可以定义一个只有1步的工作流。

作为一个示例程序,我们的定义很简单,没有考虑条件,每步流程只做任务的创建。任务的处理只有通过和拒绝。

你可以在这个基础上增加条件,动作。。。这个就看具体客户的需求了。

 

有了这个流程的定义,如何让这个流程运转起来呢?请关注下一篇博客。

 

在BI,SharePoint,工作流领域,我们服务过众多的国际国内大企业:

1. 西门子中国:BI项目与SharePoint门户
2. Nokia:BI项目与SharePoint门户
3. 中国人寿:BI & 工作流
4. 与狼共舞:BI门户
5. 玫琳凯:BI项目
6. 美国微软:BI项目
等等
(image)

本文链接:http://www.cnblogs.com/jasper/archive/2009/05/20/1468635.html,转载请注明。




[SharePoint 工作流] While里的Replicator ChildInitialized事件不执行的解决方法 - Jasper

2009-05-18T07:55:00Z

首先,这个问题的产生是由于我们打算设计一个多极多人审批的工作流,至于有多少级,每级有多少人是由配置文件定义的。从逻辑上看,我们只需要用一个While,里面放置一个Replicator,然后在Replicator里放置一个TaskActivity就可以完美的解决问题。可是,问题偏偏产生了,Replicator的ChildInitialized事件就是不运行!

首先,这个问题的产生是由于我们打算设计一个多极多人审批的工作流,至于有多少级,每级有多少人是由配置文件定义的。

从逻辑上看,我们只需要用一个While,里面放置一个Replicator,然后在Replicator里放置一个TaskActivity就可以完美的解决问题。(TaskActivity请参考《亮剑.NET SharePoint Server 2007开发实战》,你也可以访问作者博客

 

可是在调试中发现,Replicator的ChildInitialized事件总是不执行。而按照逻辑来讲,是没有问题的,我们在Replicator的Initialize事件里给InitChildData进行赋值,可是ChildInitialize就跟没有一样,不运行。

 

在网上搜索了一些资料,发现同样有人提出过相同的问题,但是没有解决方法。

 

经过2天的试验,调试,终于发现一个方法可以让Replicator的ChildInitialized事件跑起来,解决方法如下:

1. 在OnWorkflowActivated事件里,对Replicator的InitChildData进行赋值。

2. 删除Replicator的Initialize事件给InitChildData进行赋值的语句。

3. 在Replicator之后,加一个CodeActivity,在这里用代码对Replicator的InitChildData进行再赋值。

 

可能有的朋友要问了,为什么需要对Replicator进行多次赋值呢?原因就在于,这是一个多级的审批,我们用一个变量step来控制到了哪一级审批。

 举个实例来说,我们有这么一个请假流程:

  1. 第一级:提交给直接上级、人事经理进行并行审批
  2. 第二级:提交给总经理审批

那么,在OnWorkflowActivated里,Replicator的InitChildData值是2个人:直接上级和人事经理;在CodeActivity里,Replicator的InitChildData值是1个人:总经理。

这个流程的好处在于,我们只需要把配置文件定义好,就可以跑流程了,不需要再做流程方面的开发。

 

现在虽然问题解决了,但是我个人认为导致问题产生的原因应该是Replicator Activity的一个bug(没有和微软的人确认这一点,仅仅是猜测)。

 

希望这个解决方法对你有用,而且对以前碰到过相似问题的朋友有用。

 

在BI,SharePoint,工作流领域,我们服务过众多的国际国内大企业:

1. 西门子中国:BI项目与SharePoint门户
2. Nokia:BI项目与SharePoint门户
3. 中国人寿:BI & 工作流
4. 与狼共舞:BI门户
5. 玫琳凯:BI项目
6. 美国微软:BI项目
等等
(image)

本文链接:http://www.cnblogs.com/jasper/archive/2009/05/18/1459477.html,转载请注明。




[JQuery插件] 固定表头, 左侧某些列的表格 - Jasper

2009-05-13T02:34:00Z

固定表头、左侧列的表格在很多报表中都很常见,滚动表格的时候,只有数据部分会滚动,而数据的说明部分是固定的。这主要是为了用户在浏览数据的时候,更加的清晰,直观。在很多报表中,我们都会实现这种类型的表格,但是在网页上,如果要展示这样的表格,我们没有找到现成的,因此就自己写了一个JQuery的插件。示例图和下载请进。

固定表头、左侧列的表格在很多报表中都很常见,滚动表格的时候,只有数据部分会滚动,而数据的说明部分是固定的。

这主要是为了用户在浏览数据的时候,更加的清晰,直观。

在很多报表中,我们都会实现这种类型的表格,但是在网页上,如果要展示这样的表格,我们没有找到现成的,因此就自己写了一个JQuery的插件。

而我们把这个JQuery插件命名为BI Grid,也是为了表示这种类型的表格在报表中最常见。

 示例图片如下:

 (image)

请看滚动条的位置,表头和左侧第一列是固定的。不随着滚动条而滚动。

 

你可以上这个网站下载源代码:http://www.bi-grid.com/

 

目前这个JQuery插件是第一个版本,也会存在一些bug,你可以下载自己使用,也可以修改源代码,但是如果要发布你修改后的插件,需要发布源代码,不能是混淆代码。当然,如果愿意的话,我们可以发布到该插件的官方站点,以供更多的人使用。

 

在BI,SharePoint,工作流领域,我们服务过众多的国际国内大企业:

1. 西门子中国:BI项目与SharePoint门户
2. Nokia:BI项目与SharePoint门户
3. 中国人寿:BI & 工作流
4. 与狼共舞:BI门户
5. 玫琳凯:BI项目
6. 美国微软:BI项目
等等
(image)

本文链接:http://www.cnblogs.com/jasper/archive/2009/05/13/1455701.html,转载请注明。




[SharePoint] 如何隐藏列表的默认菜单? - Jasper

2009-05-11T13:25:00Z

客户的需求总是千奇百怪的, 在我们给一个德国世界500强企业实施项目的时候, 碰到了需要隐藏SharePoint列表的默认菜单。该客户需要一个图片管理系统,由于是世界500强企业,对版权的要求非常严格,公司用到的每一张图片都必须从这个系统中出,以保证没有版权问题。公司用户下载图片的时候,不能直接使用SharePoint图片库所提供的下载功能,而必须先填写下载原因等内容之后才能够下载图片。如何满足客户的这一要求呢?

客户的需求总是千奇百怪的, 在我们给一个德国世界500强企业实施项目的时候, 碰到了需要隐藏SharePoint列表的默认菜单。

该客户需要一个图片管理系统,由于是世界500强企业,对版权的要求非常严格,公司用到的每一张图片都必须从这个系统中出,以保证没有版权问题。

公司用户下载图片的时候,不能直接使用SharePoint图片库所提供的下载功能,而必须先填写下载原因等内容之后才能够下载图片。

这样,问题就来了,我们需要隐藏掉这个默认的下载菜单,另外提供一个下载菜单转向到我们自己的下载页面。

那么,如何做到这一点呢?

通过察看SharePoint生成的HTML代码,我们发现列表的菜单,是一个SharePoint自定义的对象,他甚至都提供了隐藏的属性。

这样,问题就简单了,找到要隐藏的菜单,将属性设置为Hide. DONE!

具体代码,请看:

 

<script language='javascript'>
var d_item = document.getElementById('zz20_DownloadPictures');

if(d_item != null)
{
    d_item.setAttribute(
'hidden''true');
}
</script>

 

注:这里面的zz20_DownloadPictures是我的图片库所产生的下载菜单的ID. 可能你的会有所不同。

 

在BI,SharePoint,工作流领域,我们服务过众多的国际国内大企业:

1. 西门子中国:BI项目与SharePoint门户
2. Nokia:BI项目与SharePoint门户
3. 中国人寿:BI & 工作流
4. 与狼共舞:BI门户
5. 玫琳凯:BI项目
6. 美国微软:BI项目
等等
(image)

本文链接:http://www.cnblogs.com/jasper/archive/2009/05/11/1454456.html,转载请注明。