Sharepoint2010-CustomAction之CopyListItem
来源:互联网 发布:淘宝王子什么联系的 编辑:程序博客网 时间:2024/06/05 12:14
SharePoint中一般用List 来存储数据,用Library来存储文件,最近做的项目中,由于List中的Column实在太多,每次填个表单都要花很多时间,用户也由此感受,每个单子中,很多信息都是一样的,如何才能实现快速填写表单呢?
如果可以基于旧的表单复制一份,然后修改不同的信息,不就达到要求嘛。
SharePoint2010中的CustomAction+COM让这种想法成为可能。
先看效果(选中一条记录的时候,按钮才可用)
实现思路:获取选中Item的ID,然后根据ID可以获取当前Item,新建一个Item,将选中的Item信息赋给New Item.
实现步骤:
1.定义Action显示位置
<CommandUIDefinition Location="Ribbon.ListItem.Manage.Controls._children"> <Button Id="Ribbon.CustomTab.CopyItem" Image32by32="/_layouts/images/CATLG.gif" Command="CopyItem" Description="Copy Document" LabelText="Copy Document" Sequence="3" TemplateAlias="o1"/> </CommandUIDefinition>
2.定义Action功能
CA(CustomAction)的功能由CommandUIHandler中的CommandAction属性来定义。
CommandAction="javascript: function CopyItem() { var items = SP.ListOperation.Selection.getSelectedItems(); if (items.length == 0) return; var id; for (var i in items) { id = items[i].id; break; } //获取选中Item的Id var listId = SP.ListOperation.Selection.getSelectedList(); //Get current web var myWeb = myContext.get_web(); //Get list var myList = myWeb.get_lists().getById(listId); //Get Item var curItem = myList.getItemById(id); //获取选中的Item var contentType = curItem.get_contentType(); var fields = contentType.get_fields(); myContext.load(curItem); myContext.load(fields); myContext.executeQueryAsync ( function () { var newItem = myList.addItem(new SP.ListItemCreationInformation()); //通过COM 创建一条Item var fieldEnumerator = fields.getEnumerator(); var myDate=new Date(); while (fieldEnumerator.moveNext()) { //开始赋值 var field = fieldEnumerator.get_current(); if (field.get_readOnlyField()) continue; var name = field.get_internalName(); if (name == 'ContentType') name = 'ContentTypeId'; var value = curItem.get_item(name); newItem.set_item(name, value); } newItem.update(); myContext.load(newItem); myContext.executeQueryAsync( function () { alert('New document has been created.'); // NewItem赋值完毕var id = newItem.get_id(); //获取刚创建的 Item Id OpenSubMenuDialog('/Lists/Test/EditForm.aspx?ID='+id+'&ContentTypeId=0x01003b7743e4960c4618865f01f122aeb900');//打开刚才赋值的Item//因为Item已经创建完毕,所以是跳转到EditForm而不是NewForm }, function () { alert('CopyItem() failed:' + args.get_message()); }); }, function () { alert('CopyItem() failed:' + args.get_message()); }); } CopyItem();"
3.根据上下文来控制CustomAction(必须只选中一条记录,才可用)
EnabledScript="javascript: function enableDelegates() { var items = SP.ListOperation.Selection.getSelectedItems(); var viewName = getcurrurlFileName(); if (items.length != 1) return false; else return true; } enableDelegates();"
至此CopyListItem核心功能开发完毕,如果想进一步的拓展,比如结合权限控制,只有相应权限的用户/组才能用,可以自行扩展。
思路很简单,在EnabledScript中,加一个条件来判断权限的.
- Sharepoint2010-CustomAction之CopyListItem
- sharepoint2010开发之如何部署
- moss customaction
- Quiet Execution CustomAction
- Agile Engineering Collaboration CustomAction
- CustomAction Basics in SharePoint
- 内置CustomAction的使用
- SharePoint2010之soap:Server服务器无法处理请求
- sharepoint2010下开发webpart之修改域名密码
- wix Language Feature Property CustomAction
- sharepoint2010 ModalDialog
- sharepoint2010 powershell
- sharepoint2010 sn
- UMBOY技术交流之Sharepoint系列:基于sharepoint2010企业门户系统之系统调研
- WSS Feature : CustomAction , 添加站点管理菜单
- Referencing JS files using CustomAction element
- sharepoint2010 访问自定义webservices
- SharePoint2010开发介绍(2)
- HDU 4768 Flyer 二分
- 2014雅虎笔试题之矩阵中查找字符串
- C#手动加载类库和释放类库的代码
- 2014百度笔试现场突发奇想(就收购搜狗来说)
- hdu 4768 Flyer 思路+二分
- Sharepoint2010-CustomAction之CopyListItem
- The connection to adb is down, and a severe error has occured.
- servlet2.5过滤器简单讲解
- 黑马程序员C#接口
- ios下拉刷新笔记
- dwr 后台服务器推送技术
- java三种判断字母大小写的方法
- myeclipse集成AspectJ ajdt 插件
- 两个鸡蛋和一百层楼的问题