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

[经验分享] Sharepoint学习笔记---SPList--使用Linq to Sharepoint间接查询External List(2.复制External List

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-25 13:10:32 | 显示全部楼层 |阅读模式
  上一篇(Sharepoint学习笔记---SPList--使用Linq to Sharepoint间接查询External List(1.通过BCS创建External List))我们创建了一个名为NWCustomer的External List,它的内容来自于SQL SERVER数据库的Northwind的Customer表。此处我们将讲述如何创建一个Customer List来快速引用External List并通过代码复制NWCustomer的Items。在此基础上,我们将在下一篇讲述如何使用Linq来查询相关信息(arepoint学习笔记---SPList--使用Linq to Sharepoint间接查询External List(3.使用Linq to Sharepoint查询List内容))
  因此,本文主要分为两大部分。
  1、创建Customer List: ACustomer,并基于此List,创建Lookup Column来引用 NWCustomer List的字段
  打开的你网站,点击Action下的More Options,进入下面的界面,点击Customer List
DSC0000.jpg

  Customer List命名为ACustomer,并设置在Quich Launch栏上显示出来 DSC0001.jpg
  创建好ACustomer List后,在Quich Launch栏点击它,进入它的List Setting设置界面

   DSC0002.jpg
  在List Setting设置界面上,点击Create Column链接,以创建一个新的Column

   DSC0003.jpg
  

  在Create Column界面中 ,按下图设置相关属性。在此处我们设置此Column为Lookup类型,并让它从NWCustomer List中获取信息,
  在ACustomer的此Column的默认View中,我们选择显示NWCustomer List的所有字段。 DSC0004.jpg

  设置完成并按Create按钮后,进入如下效果,我们可以看到一个没有任何Item的ACustomer List。也就是说,我们在上面的步骤中,搭好了一个ACustomer的框架,下面我们将使用代码来从NWCustomer List中批量复制Item信息到我们此处创建的ACustomer List中。 DSC0005.jpg
  
  2、使用代码快速复制NWCustomer List的内容给ACustomer List。
  打开VS2010,新建一个Empty Sharepoint Project,此处我们命名为CopyListContent,此部分,我们将使用此项目来完成对NWCustomer List内容的复制,在下一部分,我们还会基于此项目完成创建一个Visual Web Part来通过Linq to Sharepoint展示我们对ACustomer List的查询操作。在这一步,我们设置如下图:
  
DSC0006.jpg

  把项目关联到我们的测试网站 DSC0007.jpg    
  
  创建好空项目后,在此项目下新建一个Visual Web Part  
DSC0008.jpg
  
  在此Visual WebPart上添加一个按钮,并定义此按钮的Click事件。
  
  WPCopyListContentUserControl.ascx控件的定义代码如下:  


<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="WPCopyListContentUserControl.ascx.cs" Inherits="CopyListContent.WPCopyListContent.WPCopyListContentUserControl" %>
<div>
<asp:Button ID="btnCopyList" runat="server"
        Text="Copy List From External List To Customer List" Width="336px"
        Height="34px" onclick="btnCopyList_Click" />
</div>  用于复制List Item的代码如下:


#region  Copy List From Exteranl List To Customer List
        protected void SpCopyToLookUpList(string sourceListName, string desListName)
        {
            SPWeb currentWeb = SPContext.Current.Web;
            // Get a reference to the source list and dest List
            SPList sourceList = currentWeb.Lists[sourceListName];
            SPList destList = currentWeb.Lists[desListName];
            // copy items
            foreach (SPListItem item in sourceList.Items)
            {
                CopyToLookUpItem(item, destList);
            }
            destList.Update();
        }
        #endregion
        #region  Copy List Items
        private SPListItem CopyToLookUpItem(SPListItem sourceItem, SPList destinationList)
        {
            //Copy sourceItem to destinationList
            SPListItem targetItem = destinationList.Items.Add();
            foreach (SPField f in sourceItem.Fields)
            {
                //Copy all except attachments.
                if (!f.ReadOnlyField && f.InternalName != "Attachments"
                    && null != sourceItem[f.InternalName])
                {
                    targetItem["BCSFind: " + f.InternalName] = sourceItem[f.InternalName];
                }
                if (f.Title == "CustomerID")
                {
                    targetItem["BCSFind: " + f.Title] = sourceItem[f.Title];
                    targetItem["Title"] = sourceItem[f.Title];
                }
            }
            targetItem.Update();
            //Copy attachments
            foreach (string fileName in sourceItem.Attachments)
            {
                SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName);
                byte[] imageData = file.OpenBinary();
                targetItem.Attachments.Add(fileName, imageData);
            }
            return targetItem;
        }
        #endregion  
  WPCopyListContentUserControl.ascx.cs全部代码如下(包括上面的List Copy代码)

DSC0009.gif DSC00010.gif View Code

using System;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using Microsoft.SharePoint;
namespace CopyListContent.WPCopyListContent
{
    public partial class WPCopyListContentUserControl : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
        protected void btnCopyList_Click(object sender, EventArgs e)
        {
            string sourceListName = "NWCustomer";
            string destiListName = "ACustomer";
            SpCopyToLookUpList(sourceListName, destiListName);
        }
        #region  Copy List From Exteranl List To Customer List
        protected void SpCopyToLookUpList(string sourceListName, string desListName)
        {
            SPWeb currentWeb = SPContext.Current.Web;
            // Get a reference to the source list and dest List
            SPList sourceList = currentWeb.Lists[sourceListName];
            SPList destList = currentWeb.Lists[desListName];
            // copy items
            foreach (SPListItem item in sourceList.Items)
            {
                CopyToLookUpItem(item, destList);
            }
            destList.Update();
        }
        #endregion
        #region  Copy List Items
        private SPListItem CopyToLookUpItem(SPListItem sourceItem, SPList destinationList)
        {
            //Copy sourceItem to destinationList
            SPListItem targetItem = destinationList.Items.Add();
            foreach (SPField f in sourceItem.Fields)
            {
                //Copy all except attachments.
                if (!f.ReadOnlyField && f.InternalName != "Attachments"
                    && null != sourceItem[f.InternalName])
                {
                    targetItem["BCSFind: " + f.InternalName] = sourceItem[f.InternalName];
                }
                if (f.Title == "CustomerID")
                {
                    targetItem["BCSFind: " + f.Title] = sourceItem[f.Title];
                    targetItem["Title"] = sourceItem[f.Title];
                }
            }
            targetItem.Update();
            //Copy attachments
            foreach (string fileName in sourceItem.Attachments)
            {
                SPFile file = sourceItem.ParentList.ParentWeb.GetFile(sourceItem.Attachments.UrlPrefix + fileName);
                byte[] imageData = file.OpenBinary();
                targetItem.Attachments.Add(fileName, imageData);
            }
            return targetItem;
        }
        #endregion
    }
}  
  创建好Visual WebPart及其相关代码后,整个项目如下图:  
DSC00011.jpg
  
  
  把项目Build并部署到网站上。然后在此网站上创建一个WebPart页,在此页上引入我们上面创建的Visual WebPart控件,效果如下图:

   DSC00012.jpg
  点击按钮,执行从NWCustomer List复制Items到ACustomer List的操作。完成后,进入网站点击ACustomer List,可以看到内容已经成功复制到此List下,效果如下图:

   DSC00013.jpg
  如果你在复制Customer List的过程中有什么问题,想要清除Destination List(目标列表,此处就是ACustomer List)中的数据,则可以参照此文(Sharepoint学习笔记---SPList--清除List下的items与folders)用代码快速删除,当然,你也可以手动实现删除。
  

运维网声明 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-118730-1-1.html 上篇帖子: SharePoint 2010环境搭建 下篇帖子: 使用ExceptionHandlingScope进行高效的SharePoint CSOM编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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