SharePoint 2010 文档管理之文档推送

  前言:文档推送功能,不是一个复杂的功能,我们这里简单的应用了Ribbon定制、Js使用、对象模型推送(Server端),下面,我们来简单介绍下文档推送功能吧。

一、 功能设计:

  文档推送功能,主要就是一个文档库中,选择几个文档,点击Ribbon菜单上的推送菜单,跳入推送页面;推送页面选择目标列表,点击推送按钮,把选中的几个文档,推送到目标文档库。

  我这里就是复制过去,并没有选择移动,当然如果你需要这样的功能,可以稍作修改以达到目的。推送过程可能存在重命的情况,这样我会在出现异常的时候,把文件名前加上当前时间推送过去。

二、 源代码结构

  如上图所示,包括一个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[i].iid != undefined) {

var Obj_input = Obj_trColl[i].getElementsByTagName("input");

if (Obj_input.length > 0) {

if (Obj_input[0].checked) {

var striid = Obj_trColl[i].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[i]));

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("请?选?择?推ª?送¨ª列¢D表À¨ª...");

}

}

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上的推送文档;

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

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

七、 参考文档

  SharePoint 2013 添加Ribbon菜单

  http://www.cnblogs.com/jianyus/archive/2013/05/04/3059022.html

时间: 2024-08-01 16:20:34

SharePoint 2010 文档管理之文档推送的相关文章

SharePoint 2010的内容管理器(Content Organizer)

如果我们使用一个SharePoint网站来存储部门/团队的文档,通常会按照我们想要的结构,预先在网站中建立好相应的文档库和文件夹.比如,我们会创建一个"技术文档库",来存放技术类别的文档,同时创建一个"业务文档库"存放业务类别的文档,在"技术文档库"中,还可能按照编程语言的种类,建立诸如"CSharp"."C++"."Java"之类的文件夹,将技术文档按照它们所属的类别,再放置到相应的文

SharePoint 2010文档管理:文档推送

文档推送功能,不是一个复杂的功能,我们这里简单的应用了Ribbon定制.Js使用.对象模型推送(Server端),下面,我们来简单介绍下文档推送功能吧. 一. 功能设计: 文档推送功能,主要就是一个文档库中,选择几个文档,点击Ribbon菜单上的推送菜单,跳入推送页面:推送页面选择目标列表,点击推送按钮,把选中的几个文档,推送到目标文档库. 我这里就是复制过去,并没有选择移动,当然如果你需要这样的功能,可以稍作修改以达到目的.推送过程可能存在重命的情况,这样我会在出现异常的时候,把文件名前加上当

SharePoint 2010 文档管理系列

前言,这是自己第一次写一个系列的文档,本来想使用SharePoint 2013版本,但是碍于SharePoint 2013对于硬件要求过高,自己的笔记本无法承受,所以退而求其次选择了在SharePoint 2010版本上做文档管理的Demo.当然,由于个人认知.水平有限,博客所涉及的深度有所欠缺,但是也希望能够给一些做这方面工作的人带来帮助,也分享自己在工作之余的一些心得,一共做了如下几篇博客. 1.SharePoint 2010 文档管理系列之准备篇 介绍:创建网站集.文档库.列表库,简单的库

Axure RP交互设计软件使用教程:文档管理

上一篇教程:Axure RP交互设计软件使用教程 交互原型设计软件Axure中文教程--文档管理 文档管理(Document) 开章要说的是文档管理.文档管理看似简单,但是这是从操作功能上来说的,而我在说功能上的时候,想把我对文档管理的理解也一并说一下. 文档管理的目的,其实是为了有一个清晰的产品思路.刚开始工作的时候,我发现很多刚从学校出来的朋友对文档的命名与放置都是随心所欲的,我也不例外.没有好的整理习惯,这直接导致每次寻找先前的文档都要花费相当长的时间,甚至不小心误删,如果恰好有事请假,别

Winform开发框架中的内容及文档管理模块功能介绍

在开发项目的时候,我们有一些场景需要编辑一些HTML文档,作为内容发布系统的一部分,有时候也需要对一些文档如WORD文档进行编辑管理,这样需要我们对这些内容及文档进行合适的管理.本文主要介绍在WInform项目中利用ZetaHtmlEditControl进行HTML内容管理,以及利用TX TextControl控件进行WORD文档管理,这两方面都是我们一般进行内容和文档管理所必须的. 1.内容及文档管理模块功能介绍 整个模块,支持WInform框架和混合式开发框架两种模式,都是基于WInform

SharePoint 2010多语言UI及开发人员需要注意的问题

SharePoint 2010支持同一个网站呈现出不同语言的UI.比如,一个中文版的SharePoint 2010系统,管理员可以在服务器上安装SharePoint 2010英文语言包,然后在网站设置的"语言设置"中,选择"英语"为备用语言. 开发人员需要注意的问题-sharepoint ui设计"> 然后用户就可以随时使用页面右上角的用户菜单,将当前网站的显示UI,在多个语言之间进行切换. 如果你尝试一下这个功能,就会发现一个有趣的现象.对于Sha

SharePoint 2010查询规则简介

对象:搜寻管理员/IT 专业人员先决条件:本部落格假设读者已经具备基本的 SharePoint 2010 搜寻管理知识. 如果您曾经在 SharePoint 2010 产品上管理过「搜寻」,就可能已建立过 [搜寻关键词] 和 [首选].它们或许是让您将结果升级到页面最上方 (以您想要的顺序),藉以改善特定查询相关性的最简单方式.但在 SharePoint 2013 http://www.aliyun.com/zixun/aggregation/16897.html">Preview 中,您

SharePoint 2010文档管理:星级评论功能

正如我们前面介绍的是,文档管理就是让大家更加直观.方便的对手里的文档,进行统筹掌控,哪些文档是有价值的,哪些文档更受大家欢迎,所有就带来了这个星级评论. 当然,这个是SharePoint 2010自带的功能,可能会有不尽如人意的地方,大家还是选择性使用吧~~~~ 一. 文档库准备: 1. 新建文档库,如下图: 2. 开启"等级设置"功能: 3. 启用等级设置的界面,如下图: 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn

SharePoint 2010 文档管理系列之星级评论功能

前言:正如我们前面介绍的是,文档管理就是让大家更加直观.方便的对手里的文档,进行统筹掌控,哪些文档是有价值的,哪些文档更受大家欢迎,所有就带来了这个星级评论. 当然,这个是SharePoint 2010自带的功能,可能会有不尽如人意的地方,大家还是选择性使用吧~~~~ 一. 文档库准备: 1. 新建文档库,如下图: 2. 开启"等级设置"功能: 3. 启用等级设置的界面,如下图: 4. 可能遇到的报错,如下图(参考5-7步): 5. 创建User Profile Service App