步步为营 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/

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

你可能感兴趣的:(SharePoint)