步步为营 SharePoint 开发学习笔记系列 十一、SharePoint 对list操作

概要

在sharepoint中的自定义web part会涉及到对list里面的item进行操作,这篇文单将会讲解如何修改list里的item。

我们先看一个示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
/// <summary>
///
/// </summary>
/// <param name="ID"></param>
/// <returns></returns>
public SPListItemCollection GetSPListItemCollection(string ID)
{
    SPListItemCollection itemCollection = new SPListItemCollection();
    SPSecurity.RunWithElevatedPrivileges(
            delegate
            {
                using (SPSite spsite = new SPSite(this.CurrentUrl))
                {
                    using (SPWeb spWeb = spsite.OpenWeb())
                    {
                        SPList listInstance = spWeb.Lists[this.ListName];
                        SPQuery query = new SPQuery();
                        query.Query = "<Where><Eq><FieldRef Name='ID' /><Value Type='Counter'>" + ID + "</Value></Eq></Where>";
                        itemCollection = listInstance.GetItems(query);
 
                    }
                }
            }
        );
    return itemCollection;
}

SPSecurity.RunWithElevatedPrivileges()是用来提高操作权限级别来操作站点!

用法:

SPSecurity.RunWithElevatedPrivileges(delegate() {代码});提高权限将是让代码以sharepoint\system所具有的权限来执行!

更改指定的item代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public string AddNewItem()
{
    string retVal = string.Empty;
    try
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(SPContext.Current.Web.Url))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList list = web.Lists["TEST"];
                    SPListItem item = list.Items.Add();
                    item["Title"] = string.Format("Test at {0}", DateTime.Now.ToString());
                    item.Update();
                }
            }
            retVal = "operation  success!";
        });
    }
    catch (Exception ex)
    {
        retVal += ex.Message;
    }
    return retVal;
}

如果修改的不留痕迹,要使用SystemUpdate;

示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public string AddNewItem()
{
    string retVal = string.Empty;
    try
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(SPContext.Current.Web.Url))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    SPList list = web.Lists["TEST"];
                    SPListItem item = list.Items.Add();
                    item["Title"] = string.Format("Test at {0}", DateTime.Now.ToString());
                    item.SystemUpdate();
                }
            }
            retVal = "operation  success!";
        });
    }
    catch (Exception ex)
    {
        retVal += ex.Message;
    }
    return retVal;
}

在很多时候我们需要设置允许不安全的修改。使用这个AllowUnsafeUpdates.

示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public string AddNewItem()
{
    string retVal = string.Empty;
    try
    {
        SPSecurity.RunWithElevatedPrivileges(delegate()
        {
            using (SPSite site = new SPSite(SPContext.Current.Web.Url))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    web.AllowUnsafeUpdates = true;
                    SPList list = web.Lists["TEST"];
                    SPListItem item = list.Items.Add();
                    item["Title"] = string.Format("Test at {0}", DateTime.Now.ToString());
                    item.SystemUpdate();
                    web.AllowUnsafeUpdates = false;
                }
            }
            retVal = "operation  success!";
        });
    }
    catch (Exception ex)
    {
        retVal += ex.Message;
    }
    return retVal;
}

在sharepoint里面删除一条item的话可以进行如下操作.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/// <summary>
///
/// </summary>
/// <returns></returns>
private SPList GetCurrentList()
{
    using (SPSite siteCollection = new SPSite(SPContext.Current.Web.Url))
    {
        using (SPWeb web = siteCollection.OpenWeb())
        {
            SPList list = web.Lists[this.ListName];
            return list;
        }
    }
}
 
/// <summary>
///
/// </summary>
/// <param name="id"></param>
/// <param name="version"></param>
/// <param name="recycle"></param>
public void DeleteItemByIDVersion(int id, int version, bool recycle)
{
    SPListItem item = GetCurrentList().GetItemById(id);
    if (recycle)
    {
        item.Versions.GetVersionFromID(version).Recycle();
    }
    else
    {
        item.Versions.GetVersionFromID(version).Delete();
    }
}
 
 
/// <summary>
/// Property that holds the list name.
/// </summary>
public override string ListName
{
    get { return "Test"; }
}

如果只取item的发布过的版本的数据,可以做如下处理.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private NewEntity GetLastApproveVersionByItem(SPListItem item)
{
    NewEntity result = null;
    if (item == null) return result;
    if (item.Level == SPFileLevel.Published)
    {
        result = this.ConvertToEntity(item);
    }
    else if (item.Versions != null && item.Versions.Count > 0)
    {
        foreach (SPListItemVersion itemVersion in item.Versions)
        {
 
            if (itemVersion.Level == SPFileLevel.Published)
            {
                result = this.ConvertToEntity(itemVersion);
                break;
            }
        }
    }
    return result;
}

总结

sharepoint 对list的操作,主要有增加、删除和修改list里面的item数据,要注意的是这里打开的是当前操作的site。SPContext.Current.Web.Url取的是当前打开页面的值.

作者:spring yang

出处:http://www.cnblogs.com/springyangwc/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

posted @   spring yang  阅读(2594)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
点击右上角即可分享
微信分享提示