我一直以为只有在Document Library里面的File才会支持在线编辑。直到今天早上我才发现用IE打开List里面的Attachments也是支持在线编辑的,但前提是必须是IE浏览器。我和我的小伙伴们震惊的吐了。

目前正在开发的项目,我开始设计时是把所有的审批信息存放在List中,上传的文档以Attachments形式保存于List中,昨天客户来公司,我演示的时候,用Chrome打开附件,直接下载了(以后建议用IE),客户需要在线编辑功能,还狠狠的批了我们一顿,附件不能在线编辑,那我审核个毛线。(其实是可以的,用IE就行。)结束后,我也没多想(经验不足)直接对代码进行该了,将FileUpload上传的文件保存到一个Document Library 的Log中,其实这完全是多余的。

如果你想在SharePoint中,想对上传的文档进行在线的编辑,有2种方法,一种当然是上传到文档库啦,还有一种就是以Attachments上传到List。

List

首先,对ListItem进行Update操作。

if (fileAttachment.HasFile){try{foreach (var file in fileAttachment.PostedFiles){newItem.Attachments.Add(file.FileName, file.InputStream.ReadFully());}}catch (){}}newItem.Update();

然后List的ListItem编辑Webpart中,用HyperLink画出附件,其实就是获取附件的Url地址

 SPListItem newItem = this._applyItemList.GetItemById(this.ObjectId);HyperLink hyperLink=null;foreach (string currentAttachment in newItem.Attachments){hyperLink=new HyperLink();hyperLink.ID = Guid.NewGuid().ToString();string attachmentAbsoluteURL = newItem.Attachments.UrlPrefix + currentAttachment;SPFile attachmentFile = this._currentWeb.GetFile(attachmentAbsoluteURL);hyperLink.Text = attachmentFile.Name;hyperLink.NavigateUrl = attachmentAbsoluteURL;phAttachment.Controls.Add(hyperLink);//添加换行phAttachment.Controls.Add(new LiteralControl("<br />")); }

最后在编辑的Webpart如下所示,直接用IE打开,支持在线编辑,但没有历史记录

当然,你也可以将文档上传到文档库,上传到文档库里面你的操作有历史记录

Document Library

比如我将FileUpload上传的文件保存到文档库中的相应文件夹,以ListID+“-”+ListItemID命名的文件夹,这样避免了上传文档重名的问题,首先判断是否存在这个文件夹,不存在则创建,当创建完成后,将文档存放在文档库中此文件夹下:

 if (fileAttachment.HasFile){try{foreach (var file in fileAttachment.PostedFiles){using (SPSite logSite = SPContext.Current.Site){using (SPWeb logWeb = logSite.AllWebs["log"]){logWeb.AllowUnsafeUpdates = true;SPDocumentLibrary library = logWeb.Lists["ApproveAttachmentLog"] as SPDocumentLibrary;string rootUrl = library.RootFolder.Url;string listId = _applyItemList.ID.ToString();string listItemId = newItem.ID.ToString();string folderUrl = rootUrl + "/" + listId+"-" + listItemId;SPFolder folder = logWeb.GetFolder(folderUrl);if (!folder.Exists){SPListItem newFolder = library.Folders.Add(library.RootFolder.ServerRelativeUrl, SPFileSystemObjectType.Folder, listId +"-"+ listItemId);newFolder.Update();}Stream stream = file.InputStream;byte[] bytFile = new byte[Convert.ToInt32(file.ContentLength)];stream.Read(bytFile, 0, Convert.ToInt32(file.ContentLength));folder.Files.Add(System.IO.Path.GetFileName(file.FileName), bytFile, true);logWeb.AllowUnsafeUpdates = false;}}}}catch (Exception){}}           

接下来,就是获取文档库中File的AbsoluteUrl了,有一个非常漂亮的方法:file.Item[SPBuiltInFieldId.EncodedAbsUrl].ToString(),这样就可以获取当前File对应的ListItem的绝对地址了:

 if (this.ObjectId>0){SPListItem newItem = this._applyItemList.GetItemById(this.ObjectId);HyperLink hyperLink=null;using (SPSite site = SPContext.Current.Site){using (SPWeb web = site.AllWebs["log"]){SPDocumentLibrary library = web.Lists["ApproveAttachmentLog"] as SPDocumentLibrary;string rootUrl = library.RootFolder.Url;string listId = _applyItemList.ID.ToString();string listItemId = newItem.ID.ToString();string folderUrl = rootUrl + "/" + listId + "-" + listItemId;SPFolder folder = web.GetFolder(folderUrl);if (folder.Exists){foreach (SPFile file in folder.Files){hyperLink = new HyperLink();hyperLink.ID = file.Item.ID.ToString();hyperLink.Text = file.Item.Name;hyperLink.NavigateUrl = file.Item[SPBuiltInFieldId.EncodedAbsUrl].ToString();phAttachment.Controls.Add(hyperLink);//添加换行phAttachment.Controls.Add(new LiteralControl("<br />")); }}}}

效果入下,和上面展示的并无出入,但这样对文档的操作会有历史记录。

小结

对于文档的操作,推荐使用IE,毕竟是微软的产品,对SharePoint支持也会很好。

<script type="text/javascript"> </script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>

SharePoint中在线编辑文档相关推荐

  1. 多人在线编辑文档 开发_字节跳动全资收购 “幕布”,与腾讯阿里竞逐在线文档市场...

    (图片来源:全景图片) 经济观察网 记者 任晓宁 3月29日,字节跳动全资收购在线文档工具"幕布"消息爆出,幕布创始人王旭向媒体证实了这一消息.天眼查数据显示,张一鸣是幕布的运营主 ...

  2. SaaS产品你知道哪些?盘点几款在线编辑文档工具

    关于SaaS产品云端office/在线编辑文档工具/多人在线文档工具你知道哪些? 随着用户办公.学习需求的日益丰富,产品功能演化也在不断加速.目前,传统的office软件已经不能满足人们云处理.多人协 ...

  3. 工具 左侧服务列表_协作办公时代,在线编辑文档工具,安排!

    小组合作的工作,如果能够在线编辑就方便多了,小伙伴们有没有这样想过呢?今天叔白就给大家介绍一款能够在线编辑文档的工具,帮助大家提高工作效率,还想说一句,阿里出品的工具,真香! 语雀 「语雀」是一个文档 ...

  4. 【Quip】多人协作在线编辑文档

    1.Quip多人协作在线编辑文档 https://shimo.im/

  5. C# 10分钟入门基于WebOffice实现在线编辑文档,实时保存到服务器(所有office,兼容WPS)

    今天,他来了(weboffice在线编辑文档). 上次写了一个在线预览的博,当然,效果并不是太理想,但是紧急解决了当时的问题. 后来,小编重新查找资料,求助大牛,终于使用新的方式替换了之前的low方法 ...

  6. 多人在线编辑文档 开发_十个在线小工具,科研amp;工作必备神器!

    有的时候,做一些网页小工具比软件客户端要好用,客户端有时候出现问题,罢工不能用,而且有的软件还非常占用内存,安装起来可能要好几个小时,所以,小编今天给大家推荐了这些在线版的小工具,非常实用,想用就打开 ...

  7. 多人在线编辑文档 开发_太方便了,支持多人同时编辑,电脑和手机端实时同步保存...

    平时很多小伙伴都有编辑文档的需求,而且有时需要分工合作,将它们发送给自己的朋友或者同事等等,多人一起才能完成一项任务.除了互相来回发送显得不方便外,只能用手机或电脑单一的编辑,不能随时随地操作也很影响 ...

  8. 多人在线编辑文档 开发_腾讯文档,支持多人实时在线协同编辑

    多年前,在港资公司工作需要多人协同编辑文档,用的是VPN+Google Docs,很早就体验过多人在线协同办公的便利,那时候,APP.微信,甚至智能手机,都没普及. 现在,就算没有VPN,用不了Goo ...

  9. 多人同步在线编辑文档(onlyoffice)服务器部署-测试

    我装的是社区服务器 + 文件服务器(这样才能实现多人在线同时编辑文件) 这个是我虚拟机的配置,onlyoffice 官网建议 官方网址 :https://helpcenter.onlyoffice.c ...

最新文章

  1. ckeditor java 使用_如何覆盖默认插件并使用它们拥有按钮ckeditor
  2. 软件测试和系统试验,实验四 软件系统性测试
  3. 百度ueditor编辑器注入漏洞修补查杀程序
  4. pat 乙级 1017 A除以B(C++)
  5. android ViewPager 图片浏览和保存图片
  6. 作者:李雪梅(1984-),女,烟台中科网络技术研究所研发工程师。
  7. java并发AtomicIntegerFieldUpdater
  8. Linux下的tty和pts:PTS之间标准输入输出的交互
  9. Go 将在下个版本支持新型排序算法:pdqsort
  10. ie6中兼容性问题总结
  11. 二叉树先序、中序、后序的递归算法---《数据结构》
  12. QT5.11安装教程
  13. 多卡聚合设备 广电视频传输解决方案
  14. java替换特殊字符,如何替换字符串中的特殊字符?
  15. window操作系统安装教程(PE辅助)
  16. 这是啥SQL,室友看了人傻了
  17. C# 自定义分页控件
  18. 猫咖小程序开发有何优势?具备什么功能版块?
  19. 怎么把启用计算机的d磁盘,Win10计算机怎么隐藏磁盘盘符?
  20. 命运被转折改变--掌握java高性能分布式服务和海量大数据技术体系(第二期)

热门文章

  1. iphone测试oled的软件,干货 |西努妙解 iPhoneX OLED全面屏的检测方法
  2. 论文阅读--利用完全卷积和空间变换网络从部分二维观测中产生三维超声
  3. java自定义标签库的开发
  4. ZeroTierr的moon云服务器搭建和使用
  5. 【Scratch考级99图】图20-等级考试scratch绘制复杂图形5个正方形 少儿编程 scratch画图案例教学
  6. 如何把一组计算机做成云,旧电脑如何变成云电脑?进来了解下云电脑
  7. android 字体颜色 渐变色,Android渐变色处理
  8. 九万里风鹏正举,扬帆起航,踏上新征程
  9. 当我亲身面对大数据杀熟的商家.....
  10. Centos下netstat的使用