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

概要

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

我们先看一个示例

        /// <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代码

        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;

示例如下:

        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.

示例如下:

        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的话可以进行如下操作.

        /// <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的发布过的版本的数据,可以做如下处理.

        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 @ 2011-08-03 18:03  spring yang  阅读(2588)  评论(0编辑  收藏  举报