posts - 29,  comments - 67,  trackbacks - 10
我们在SharePoint中自定义菜单,通常通过带CustomAction 的Feature来实现,比如隐藏一个菜单:
<HideCustomAction>
  GroupId = "Text"
  HideActionId = "Text"
  Id = "Text"
  Location = "Text">
</HideCustomAction>
自定义一个菜单:
<CustomAction 
    
Id="Extend"
   Location
="Microsoft.SharePoint.Administration.ApplicationManagement"
    Sequence
="10" 
    Title
="Extend or upgrade virtual server" 
    Description
="">
    
<UrlAction Url="vslist.aspx?NextPage=extendvsoption.aspx&amp;Show=NeedExtend&amp;Show=NeedUpgrade"/>
</CustomAction>

具体知识请参考SDK或者参考网上的相关文章。
但是。。。。这种方法不是都管用的,比如我要改变文档库或者列表的ListItem的菜单中的某项或者增加删除一个菜单等等,通过这种方法是没有效果的……



这个时候,我们通过javascript来实现就非常容易了,如果您看过core.js的代码就会发现,MS已经给我们预留了自定义的接口来实现我们自己的菜单定义了,MS想的就是周到哇,嘿嘿……
core.js在路径C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\下的1033[英文]或者2052[中文]下,我们找到添加文档库/列表菜单的function



看到了吧我们可以自定义实现Custom_AddDocLibMenuItems(文档库) / Custom_AddListMenuItems(列表)来添加我们自己的菜单,具体做法是。。。
1)在我们的页面中加入一个WebPart-内容编辑器部件,然后修改部件属性,最好将部件设置为隐藏的:


然后点击“源编辑器...”,输入我们的自定义javascript脚本来实现我们自己的菜单:
<script language="javascript">
function Custom_AddDocLibMenuItems(m, ctx)
{
    strDisplayText 
= "我的菜单";
    
var rootMenu = CASubM(m,strDisplayText,"","",500);

    strDisplayText 
= "我的菜单还是我的菜单";
    strAction 
= "STSNavigate('http://www.cnblogs.com')";
    strImagePath
=ctx.imagesPath+"oisweb.gif";
    menuOption 
= CAMOpt(rootMenu,strDisplayText,strAction,strImagePath);
    menuOption.id 
= "ID_MySubMenu";
    
return false;
}

</script>
function里怎么个写法可以参照core.js的写法:)  最后的return false;说明继续执行系统的代码,如果return true的话。。。那整个菜单就一个你自己的菜单项啦。写完后保存,然后退出编辑模式来瞧瞧:



如果要去掉某个菜单,比如WorkFlow之类,我比较笨,用了个笨方法,把他内置的AddDocLibMenuItems中的脚本copy过来,把要去掉的菜单项给注释掉,然后最后来个return true;呵呵

个人习惯:

posted on 2007-10-29 23:44 皮皮@北京 阅读(986) 评论(10)  编辑 收藏 所属分类: Office

FeedBack:
2007-10-30 13:02 | A A      
牛啊.....牛人就是牛啊。..

羡慕ing.......
  回复  引用  查看    
2007-11-03 09:47 | 刘帝勇      
不错,学习了。明白思路了。吼吼
  回复  引用  查看    
2008-06-18 14:22 | [重庆]黑恼火 [未注册用户]
牛!收藏了,谢谢!
  回复  引用    
2008-07-07 09:19 | cdboy      
收藏一个
  回复  引用  查看    
2008-07-27 20:44 | ZuoYi [未注册用户]
很早就看到这篇帖子了,但是没有去做一个!
现在要用了,借鉴一下!
顶一个!
  回复  引用    
2008-08-22 17:47 | rrr [未注册用户]
按照版主的发试了,我是从版主:“1)在我们的页面中加入一个WebPart-内容编辑器部件,然后修改部件属性,最好将部件设置为隐藏的:〉〉〉〉〉”这开始做的 但是没有在“新建、上载、操作、设置”上看到新增的“我的菜单”这项;


发生这种情况的可能原因是什么?
  回复  引用    
2008-08-22 18:25 | rrr [未注册用户]
<HideCustomAction>
GroupId = "Text"
HideActionId = "Text"
Id = "Text"
Location = "Text">
</HideCustomAction>


<CustomAction
Id="Extend"
Location="Microsoft.SharePoint.Administration.ApplicationManagement"
Sequence="10"
Title="Extend or upgrade virtual server"
Description="">
<UrlAction Url="vslist.aspx?NextPage=extendvsoption.aspx&amp;Show=NeedExtend&amp;Show=NeedUpgrade"/>
</CustomAction>




版主:这些代码怎么用阿?放在那?


  回复  引用    
2008-10-02 15:39 | 皇上爱累了      
谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢,帮了大忙了!!
  回复  引用  查看    
2008-10-14 10:06 | lxrc [未注册用户]
如果我加的存在ID的值的变化,如何办?
  回复  引用    

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-10-29 23:53 编辑过
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索


相关链接:
 




<2007年10月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

承接各种

ASP.NET/SharePoint

项目! (继续)

MSN/EMAIL:
QQ: 41722764

(请注明验证信息)

搜索

 

常用链接

留言簿(8)

随笔分类

最新随笔

最新评论

阅读排行榜

评论排行榜