完全自定义sharepoint列表的下拉菜单
来源:互联网 发布:淘宝店铺退货率 编辑:程序博客网 时间:2024/05/16 19:55
其实估计好多人都知道这个, 嗯
这个下拉菜单就是默认sharepoint列表里那个包含"查看", "编辑", "删除"之类的菜单
这个东西是完全在前台实现的, 并且sharepoint提供了js接口去修改它
方法就是在这个webpart之前插入一段js
比如如果自定义文档库列表的话, 就放一个Custom_AddDocLibMenuItems方法
如果是普通列表的话, 就放一个Custom_AddListMenuItems方法
举个例子来说:
这个方法会去掉下面webpart的默认菜单项, 并且添加一个Show Hoho菜单项, 点击后alert
CAMOpt是内置的创建菜单项的方法
第二个参数指定名称, 第三个指定一个action(javascript函数), 第三个指定image(没有写"")
第四个指定image的alt属性(我猜), 第五个是菜单项的顺序编号(我继续猜)
如果Custom_AddListMenuItems返回true, 那么不会创建默认的那些菜单项
如果返回false或者不些return语句, 默认的那些菜单项还在
这样我们就可以几乎完全自己定制这个菜单了
有几个地方目前我没想好怎么解决:
1. 这个只适用于普通列表和文档库
如果是文档或者列表条目的版本的话, 好像没有接口
如果列表是Meeting(template=200), 好像也没有接口
2. 通过feature加的菜单项没有提供接口把它去掉
3. 如果页面中有多个webpart, 会比较麻烦(其实也能区分出来,见后文)
创建菜单项还有很多乱七八糟的东西
有几个内置的js文件可以参考一下, 它们都在layouts/2052下
ows.js: 创建菜单项主要是在这里完成的, 在4400行左右的那一大片函数
menu.js: 实际创建出菜单项是在这里, 比如上面那个CAMOpt方法
init.js: 这里面包含context的定义(1308行), 这个context就是Custom_AddListMenuItems参数的那个ctx, 里面有很多可以用到的属性, 比如列表, 视图等(但是是GUID而不是名称), 可以根据这两个东西把页面上的多个webpart区分出来, 另外还包含当前用户的id,查看编辑页面的Url等等
如果需要在创建过程中判断权限, 可以使用HasRights方法
参数是权限的高4字节和低4字节(这个数字我没有核实, 但是我猜和SPBasePermission枚举里的数字是一致的)
权限这个数字是long(8字节)类型的, full permission mask是0x7fffffffffffffff
需要注意的是, 当前用户在这个列表条目上的permission mask是直接写在页面的html里的, 在菜单容器那个table的Perm属性
这个table还包括了很多很多属性, 比如用的是哪一个context, 它的内容类型, 列表条目的id, 它的url, 还有一些我不知道是什么东西的东西
这个下拉菜单就是默认sharepoint列表里那个包含"查看", "编辑", "删除"之类的菜单
这个东西是完全在前台实现的, 并且sharepoint提供了js接口去修改它
方法就是在这个webpart之前插入一段js
比如如果自定义文档库列表的话, 就放一个Custom_AddDocLibMenuItems方法
如果是普通列表的话, 就放一个Custom_AddListMenuItems方法
举个例子来说:
<script language='javascript'>
function Custom_AddListMenuItems(m, ctx)
{
var menuOption;
strDisplayText="Show Hoho";
strAction="javascript:alert('hoho')";
strImagePath=ctx.imagesPath+"exptitem.gif";
menuOption=CAMOpt(m, strDisplayText, strAction, strImagePath, null, 550);
menuOption.id="ID_Custom";
return true;
}
script>
这个方法会去掉下面webpart的默认菜单项, 并且添加一个Show Hoho菜单项, 点击后alert
CAMOpt是内置的创建菜单项的方法
第二个参数指定名称, 第三个指定一个action(javascript函数), 第三个指定image(没有写"")
第四个指定image的alt属性(我猜), 第五个是菜单项的顺序编号(我继续猜)
如果Custom_AddListMenuItems返回true, 那么不会创建默认的那些菜单项
如果返回false或者不些return语句, 默认的那些菜单项还在
这样我们就可以几乎完全自己定制这个菜单了
有几个地方目前我没想好怎么解决:
1. 这个只适用于普通列表和文档库
如果是文档或者列表条目的版本的话, 好像没有接口
如果列表是Meeting(template=200), 好像也没有接口
2. 通过feature加的菜单项没有提供接口把它去掉
3. 如果页面中有多个webpart, 会比较麻烦(其实也能区分出来,见后文)
创建菜单项还有很多乱七八糟的东西
有几个内置的js文件可以参考一下, 它们都在layouts/2052下
ows.js: 创建菜单项主要是在这里完成的, 在4400行左右的那一大片函数
menu.js: 实际创建出菜单项是在这里, 比如上面那个CAMOpt方法
init.js: 这里面包含context的定义(1308行), 这个context就是Custom_AddListMenuItems参数的那个ctx, 里面有很多可以用到的属性, 比如列表, 视图等(但是是GUID而不是名称), 可以根据这两个东西把页面上的多个webpart区分出来, 另外还包含当前用户的id,查看编辑页面的Url等等
如果需要在创建过程中判断权限, 可以使用HasRights方法
参数是权限的高4字节和低4字节(这个数字我没有核实, 但是我猜和SPBasePermission枚举里的数字是一致的)
权限这个数字是long(8字节)类型的, full permission mask是0x7fffffffffffffff
需要注意的是, 当前用户在这个列表条目上的permission mask是直接写在页面的html里的, 在菜单容器那个table的Perm属性
这个table还包括了很多很多属性, 比如用的是哪一个context, 它的内容类型, 列表条目的id, 它的url, 还有一些我不知道是什么东西的东西
- 完全自定义sharepoint列表的下拉菜单
- SharePoint 2010/2013 快速隐藏列表项目的下拉菜单
- Sharepoint中为列表添加自定义的菜单项
- 仿QQ下拉菜单列表 自定义Spinner
- 简洁的下拉菜单列表
- android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
- android自定义Spinner下拉菜单和AutoCompleteTextView自动显示的(下拉列表框)样式
- sharepoint 2010 在自定义列表的字段上增加功能菜单
- android自定义Spinner下拉菜单(下拉列表框)样式
- android自定义Spinner下拉菜单(下拉列表框)样式
- jquery自定义的下拉菜单
- 完全CSS下拉菜单
- Sharepoint中的自定义菜单
- android--多级下拉列表菜单的实现
- 创建与SharePoint 2010风格一致的下拉菜单
- 创建与SharePoint 2010风格一致的下拉菜单
- SharePoint 配置站点导航栏顶级菜单栏的下拉菜单
- popupMenu下拉菜单列表
- InstallShield12的静默安装
- 同桌的你 吉他简谱
- 外面的世界 吉他简谱
- PuTTY 直接登陆主机
- 提供良好的产品信息——电子商务准则
- 完全自定义sharepoint列表的下拉菜单
- 利用 easymock 测试 jdbc 分析
- 部署cas服务器实现定制JDBC验证
- oracle 事务隔离级别,用jdbc体验
- 浅谈Java数据库连接方式及存取技术
- JDBC之接口技术
- 一个很Cool的JS菜单效果
- JDBC入门
- Java图像处理技术之四