设为首页 收藏本站
查看: 703|回复: 0

[经验分享] SharePoint 2010 文档管理(6)文档推送

[复制链接]

尚未签到

发表于 2019-2-4 12:06:33 | 显示全部楼层 |阅读模式
  前言:文档推送功能,不是一个复杂的功能,我们这里简单的应用了Ribbon定制、Js使用、对象模型推送(Server端),下面,我们来简单介绍下文档推送功能吧。
  一、 功能设计:
  文档推送功能,主要就是一个文档库中,选择几个文档,点击Ribbon菜单上的推送菜单,跳入推送页面;推送页面选择目标列表,点击推送按钮,把选中的几个文档,推送到目标文档库。
  我这里就是复制过去,并没有选择移动,当然如果你需要这样的功能,可以稍作修改以达到目的。推送过程可能存在重命的情况,这样我会在出现异常的时候,把文件名前加上当前时间推送过去。
  二、 源代码结构

  如上图所示,包括一个Feature(用来激活功能),一个可视化WebPart(推送功能),一个Ribbon(菜单)。
  三、 添加Ribbon
  添加Ribbon菜单应该算是一个比较简单的功能,新建一个Ribbon的空元素,添加我们Ribbon的xml,编写这个Xml就可以了。而这个Ribbon的作用,就是调用一个JS的函数,函数通过内容编辑器添加在页面上。
  当然,如果你对添加Ribbon不是很熟悉,可以参考后面的参考文档,是关于SharePoint2013如何添加Ribbon,其过程和SharePoint2010版本是一样的,文档描述的很清楚,相信大家可以很容易完成这一步。
  
  

    Location="CommandUI.Ribbon">
  
  
  

    Command="PushDocsButtonCommand"
  Image32by32="/_layouts/2052/images/formatmap32x32.png"
  LabelText="推送文档"
  TemplateAlias="o2" />
  
  
  
  
  
  
  
  
  四、 准备JS脚本:
  Js脚本的作用,就是去页面上找,我们选中哪些项文档,然后把文档的ID组成一个字符串,用来传送给推送页面使用。
  当然,js脚本还会传送源列表的Guid,为了知道我们要推送的文档来自哪里,这些都是比较容易理解的,由于写JS脚本的时候,没有dw、spd之类的编辑器,是记事本里面写的,样式比较难看,大家凑合看吧。JS脚本附后:
  
  function JumpUrl(TableID, JumpURL, ListID) {
  var StrIDColl = "";
  var Obj_table = document.getElementById(TableID);
  var Obj_trColl = Obj_table.getElementsByTagName("tr");
  for (var i = 0; i < Obj_trColl.length; i++) {
  if (Obj_trColl.iid != undefined) {
  var Obj_input = Obj_trColl.getElementsByTagName(&quot;input&quot;);
  if (Obj_input.length > 0) {
  if (Obj_input[0].checked) {
  var striid = Obj_trColl.iid + &quot;&quot;;
  var intI1 = striid.indexOf(&quot;,&quot;) + 1;
  var intI2 = striid.lastIndexOf(&quot;,&quot;);
  striid = striid.substring(intI1, intI2);
  StrIDColl += (striid + &quot;-&quot;);
  }
  }
  }
  } if (StrIDColl.length > 0) {
  var url = JumpURL + &quot;?IDC=&quot; + StrIDColl.substring(0, StrIDColl.length - 1) + &quot;&ListID=&quot; + ListID;
  window.open(url);
  }
  else {
  alert(&quot;请选择推送文档…&quot;);
  }
  }
  function PushDoc() {
  JumpUrl('onetidDoclibViewTbl0', '/SitePages/DocsPush.aspx', 'D0501C8E-E765-4206-85B1-553A559508F8');
  }
  
  五、 写推送部件:
  如下面表格所示,可视化webpart里面就只有一个Label用来显示文字,一个DropDownList用来显示目标文档库合集,一个Button来点击推送。
  下面两个方法是核心方法,包括初始化DropDownLink控件,把所有可选的文档库绑定好;推送方法,获取包含所有ID的字符串数组和源列表的GUID。
  我觉得方法的代码都在这里,没必要给大家具体解释了,代码的逻辑非常简单,推送过程很简单,所有代码附后:
  核心代码:
  public void InitDropDownList()//初始化DropDownLink

  public void PushDocs(string ListID, string[]>
  public void PushDocs(string ListID, string[]>  {
  try
  {
  string strIDC = Request.QueryString[&quot;IDC&quot;].ToString();
  ListID = Request.QueryString[&quot;ListID&quot;].ToString();
  if (strIDC.IndexOf(&quot;-&quot;) > 0)
  {
  IDC = strIDC.Split('-');
  }
  else
  {
  IDC = new string[1];
  IDC[0] = strIDC;
  }
  Guid ListGuid = new Guid(ListID);
  using (SPSite site = new SPSite(SPContext.Current.Site.ID))
  {
  using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
  {
  SPList list = web.Lists[ListGuid];
  SPList Targetlist = web.Lists[dwlist.SelectedValue];

  for (int i = 0; i   {
  SPListItem item = list.GetItemById(Convert.ToInt32(IDC));
  try
  {
  string CopyToUrl = site.Url + Targetlist.RootFolder.ServerRelativeUrl.ToString() + &quot;/&quot; + item.Name;
  item.CopyTo(CopyToUrl);
  }
  catch
  {
  string CopyToUrl = site.Url + Targetlist.RootFolder.ServerRelativeUrl.ToString() + &quot;/&quot; + DateTime.Now.ToString(&quot;yyyy-MM-dd hhmmss&quot;) + item.Name;
  item.CopyTo(CopyToUrl);
  }
  }
  }
  }
  }
  catch
  {
  Response.Write(&quot;请?选?择?推a?送¨a列¢D表à¨a...&quot;);
  }
  }
  public void InitDropDownList()
  {
  try
  {
  ListItemCollection LIColl = new ListItemCollection();
  using (SPSite site = new SPSite(SPContext.Current.Site.ID))
  {
  using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
  {
  foreach (SPList list in web.Lists)
  {
  if (list.BaseType == SPBaseType.DocumentLibrary)
  {
  ListItem listitem = new ListItem(list.Title,list.ID.ToString());
  LIColl.Add(listitem);
  }
  }
  }
  }
  dwlist.DataSource = LIColl;
  dwlist.DataBind();
  }
  catch
  {
  }
  }
  protected void btn_Push_Click(object sender, EventArgs e)
  {

  PushDocs(ListID,>  }
  六、 效果展示:
  1. 如下图,选择我们要推送的文档,然后点击Ribbon上的推送文档;

  2. 点击推送后,弹出推送页面,如下图;可以看到页面的URL上,IDC参数包含了选择的ID,ListID参数是源列表的Guid,点击推送即可。特别地说,这个下拉框的列表类型,都是文档库,在绑定的时候已经过滤,当然,我们还可以通过其他方式,过滤掉系统文档库。

  3. 选择文档库“软件一部”,点击推送,推送后结果:如下图所示,我们选中的两个文档,推送到了软件一部下面,目标完成!

  七、 参考文档
  SharePoint 2013 添加Ribbon菜单
  http://www.cnblogs.com/jianyus/archive/2013/05/04/3059022.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-671702-1-1.html 上篇帖子: Office 365 SharePoint 迁移浅谈 (二)SMAT 2013 介绍 下篇帖子: SharePoint 2016 服务器部署(六)SharePoint 证书申请&访问方式加密
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表