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

[经验分享] SharePoint 2010 文档管理之文档推送

[复制链接]

尚未签到

发表于 2015-9-25 08:21:55 | 显示全部楼层 |阅读模式
  前言:文档推送功能,不是一个复杂的功能,我们这里简单的应用了Ribbon定制、Js使用、对象模型推送(Server端),下面,我们来简单介绍下文档推送功能吧。
  一、 功能设计:
  文档推送功能,主要就是一个文档库中,选择几个文档,点击Ribbon菜单上的推送菜单,跳入推送页面;推送页面选择目标列表,点击推送按钮,把选中的几个文档,推送到目标文档库。
  我这里就是复制过去,并没有选择移动,当然如果你需要这样的功能,可以稍作修改以达到目的。推送过程可能存在重命的情况,这样我会在出现异常的时候,把文件名前加上当前时间推送过去。
  二、 源代码结构
DSC0000.png
  如上图所示,包括一个Feature(用来激活功能),一个可视化WebPart(推送功能),一个Ribbon(菜单)。
  三、 添加Ribbon
  添加Ribbon菜单应该算是一个比较简单的功能,新建一个Ribbon的空元素,添加我们Ribbon的xml,编写这个Xml就可以了。而这个Ribbon的作用,就是调用一个JS的函数,函数通过内容编辑器添加在页面上。
  当然,如果你对添加Ribbon不是很熟悉,可以参考后面的参考文档,是关于SharePoint2013如何添加Ribbon,其过程和SharePoint2010版本是一样的,文档描述的很清楚,相信大家可以很容易完成这一步。
  <?xml version="1.0" encoding="utf-8"?>
  <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction Id="Ribbon.CustomGroup" RegistrationId="101" RegistrationType="List" Title="推送文档"
  Location="CommandUI.Ribbon">
  <CommandUIExtension>
  <CommandUIDefinitions>
  <CommandUIDefinition
  Location="Ribbon.Documents.New.Controls._children">
  <Button Id="Ribbon.Documents.New.PushDocsButton"
  Command="PushDocsButtonCommand"
  Image32by32="/_layouts/2052/images/formatmap32x32.png"
  LabelText="推送文档"
  TemplateAlias="o2" />
  </CommandUIDefinition>
  </CommandUIDefinitions>
  <CommandUIHandlers>
  <CommandUIHandler
  Command="PushDocsButtonCommand"
  CommandAction="javascript:PushDoc()" />
  </CommandUIHandlers>
  </CommandUIExtension>
  </CustomAction>
  </Elements>
  四、 准备JS脚本:
  Js脚本的作用,就是去页面上找,我们选中哪些项文档,然后把文档的ID组成一个字符串,用来传送给推送页面使用。
  当然,js脚本还会传送源列表的Guid,为了知道我们要推送的文档来自哪里,这些都是比较容易理解的,由于写JS脚本的时候,没有dw、spd之类的编辑器,是记事本里面写的,样式比较难看,大家凑合看吧。JS脚本附后:
  <script>
  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("input");
  if (Obj_input.length > 0) {
  if (Obj_input[0].checked) {
  var striid = Obj_trColl.iid + "";
  var intI1 = striid.indexOf(",") + 1;
  var intI2 = striid.lastIndexOf(",");
  striid = striid.substring(intI1, intI2);
  StrIDColl += (striid + "-");
  }
  }
  }
  } if (StrIDColl.length > 0) {
  var url = JumpURL + "?IDC=" + StrIDColl.substring(0, StrIDColl.length - 1) + "&ListID=" + ListID;
  window.open(url);
  }
  else {
  alert("请选择推送文档…");
  }
  }
  function PushDoc() {
  JumpUrl('onetidDoclibViewTbl0', '/SitePages/DocsPush.aspx', 'D0501C8E-E765-4206-85B1-553A559508F8');
  }
  </script>
  五、 写推送部件:
  如下面表格所示,可视化webpart里面就只有一个Label用来显示文字,一个DropDownList用来显示目标文档库合集,一个Button来点击推送。
  下面两个方法是核心方法,包括初始化DropDownLink控件,把所有可选的文档库绑定好;推送方法,获取包含所有ID的字符串数组和源列表的GUID。
  我觉得方法的代码都在这里,没必要给大家具体解释了,代码的逻辑非常简单,推送过程很简单,所有代码附后:
    核心代码:
  public void InitDropDownList()//初始化DropDownLink
  public void PushDocs(string ListID, string[] IDC)//推送方法
  public void PushDocs(string ListID, string[] IDC)
  {
  try
  {
  string strIDC = Request.QueryString["IDC"].ToString();
  ListID = Request.QueryString["ListID"].ToString();
  if (strIDC.IndexOf("-") > 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 < IDC.Length; i++)
  {
  SPListItem item = list.GetItemById(Convert.ToInt32(IDC));
  try
  {
  string CopyToUrl = site.Url + Targetlist.RootFolder.ServerRelativeUrl.ToString() + "/" + item.Name;
  item.CopyTo(CopyToUrl);
  }
  catch
  {
  string CopyToUrl = site.Url + Targetlist.RootFolder.ServerRelativeUrl.ToString() + "/" + DateTime.Now.ToString("yyyy-MM-dd hhmmss") + item.Name;
  item.CopyTo(CopyToUrl);
  }
  }
  }
  }
  }
  catch
  {
  Response.Write("请?选?择?推&ordf;?送&uml;&ordf;列¢D表&Agrave;&uml;&ordf;...");
  }
  }
  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, IDC);
  }
  
  六、 效果展示:
  1. 如下图,选择我们要推送的文档,然后点击Ribbon上的推送文档;
DSC0001.png
  2. 点击推送后,弹出推送页面,如下图;可以看到页面的URL上,IDC参数包含了选择的ID,ListID参数是源列表的Guid,点击推送即可。特别地说,这个下拉框的列表类型,都是文档库,在绑定的时候已经过滤,当然,我们还可以通过其他方式,过滤掉系统文档库。
DSC0002.png
  3. 选择文档库“软件一部”,点击推送,推送后结果:如下图所示,我们选中的两个文档,推送到了软件一部下面,目标完成!
DSC0003.png
  七、 参考文档
  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-118380-1-1.html 上篇帖子: SharePoint 2013 代码创建应用程序目录(App Catalog) 下篇帖子: 把SharePoint 2010站点变成2007
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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