Eventhandler的SharePoint问题

时间:2012-12-05 09:34:35

标签: sharepoint-2010

问题:我有一个列表,如果我创建一个新项目,我想执行以下操作:

  1. 在列[AutoGeneratedID]
  2. 中创建新的自动增量编号
  3. 使用[Titel]和[AutoGeneratedID]在列表和新子网站中创建HyperLink
  4. 问题是我无法让[AutogeneratedID]填充一个值,因为它是一个迭代事件,但如果我尝试将代码放在一个ItemAdding事件中,我会遇到如下链接所述的问题:

    http://www.sharepoint-tips.com/2006/09/synchronous-add-list-event-itemadding.html

       using System;
       using System.Security.Permissions;
       using Microsoft.SharePoint;
       using Microsoft.SharePoint.Security;
       using Microsoft.SharePoint.Utilities;
       using Microsoft.SharePoint.Workflow;
       using System.Diagnostics;
    
    namespace KuC_Solution.EventReceiver1
    {
    /// <summary>
    /// List Item Events
    /// </summary>
    public class EventReceiver1 : SPItemEventReceiver
    {
    
       /// <summary>
       /// An item was added.
       /// </summary>
        public override void ItemAdded(SPItemEventProperties properties)
        {
            base.ItemAdded(properties);
    
            // -----------------------------------------------------------
    
            try
            {
                this.EventFiringEnabled = false;
                // Column name AutoGeneratedID
                string columnName = "AutoGeneratedID";
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using (SPWeb web = properties.OpenWeb())
                    {
                        web.AllowUnsafeUpdates = true;
                        //get the current list
                        SPList list = web.Lists[properties.ListId];
                        int highestValue = 0;
                        foreach (SPListItem item in list.Items)
                        {
                            if (item[columnName] != null && item[columnName].ToString().Trim() != "")
                            {
                                string value = item[columnName].ToString();
                                try
                                {
                                    int currValue = int.Parse(value);
                                    if (currValue > highestValue)
                                        highestValue = currValue;
                                }
                                catch (Exception ex)
                                {
                                    Trace.WriteLine(ex.Message);
                                }
                            }
                        }
                        SPListItem currItem = list.Items.GetItemById(properties.ListItem.ID);
                        currItem[columnName] = (highestValue + 1).ToString();
                        currItem.SystemUpdate(false);
                        web.AllowUnsafeUpdates = false;
                    }
                });
                this.EventFiringEnabled = true;
            }
            catch (Exception ex)
            {
                Trace.WriteLine(ex.Message);
            }
    
            // -----------------------------------------------------------
    
    
    
        }
       /// <summary>
       /// An item is being added.
       /// </summary>
       public override void ItemAdding(SPItemEventProperties properties)
       {
           base.ItemAdding(properties);
    
           //-------------------------------------------------------------
    
           // Get the web where the event was raised
           SPWeb spCurrentSite = properties.OpenWeb();
    
           //Get the name of the list where the event was raised         
           String curListName = properties.ListTitle;
    
           //If the list is our list named SubSites the create a new subsite directly below the current site
           if (curListName == "TESTautoNumber")
           {
               //Get the SPListItem object that raised the event
               SPListItem curItem = properties.ListItem;
               //Get the Title field from this item. This will be the name of our new subsite
               String curItemSiteName2 = properties.AfterProperties["Title"].ToString();
               //String curItemSiteName3 = properties.AfterProperties["ID"].ToString();
               String mia = properties.AfterProperties["AutoGeneratedID"].ToString();
               String curItemSiteName = curItemSiteName2 + mia;
               //Get the Description field from this item. This will be the description for our new subsite
               //String curItemDescription = properties.AfterProperties["Projekt-ID"].ToString();
               string curItemDescription = "CREWPOINT";
               //String testme = "1";
    
               //Update the SiteUrl field of the item, this is the URL of our new subsite
               properties.AfterProperties["tLINK"] = spCurrentSite.Url + "/" + curItemSiteName;
    
    
               //Create the subsite based on the template from the Solution Gallery
               SPWeb newSite = spCurrentSite.Webs.Add(curItemSiteName, curItemSiteName, curItemDescription, Convert.ToUInt16(1033), "{4ADAD620-701D-401E-8DBA-B4772818E270}#myTemplate2012", false, false);
               //Set the new subsite to inherit it's top navigation from the parent site, Usefalse if you do not want this.
               newSite.Navigation.UseShared = true;
               newSite.Close();
    
           }
    //---------------------------------------------------------------
       }
      }
    }
    

0 个答案:

没有答案