Sharepoint 2010事件接收器项目在另一个列表中添加和更新

时间:2012-03-22 15:56:26

标签: sharepoint-2010

我有两个列表,我想在第一个列表中添加新项目时更新第二个列表。 我使用以下代码但没有任何反应。

     public override void ItemAdding(SPItemEventProperties properties)
      {
        base.ItemAdding(properties);
        string MenuList = properties.ListTitle;

        if (MenuList == "Menu")
        {
            string mySiteUrl = "http://rizwan-pc";
            using (SPSite mysiteCollection = new SPSite(mySiteUrl))
            {
                using (SPWeb mySite = mysiteCollection.RootWeb)
                {
                    string title = properties.ListItem["Title"].ToString();

                    SPList Menu_lookUp = mySite.Lists["Menu LookUp"];
                    SPListItem newListItem = Menu_lookUp.Items.Add();
                    newListItem["Applicable"] = title;
                    newListItem.Update();
                }
            }
        }
    }

我想复制第一个列表中我当前添加的第二个列表中的新项目。 任何帮助都会很棒,提前谢谢。

1 个答案:

答案 0 :(得分:6)

如果你想获得listitem的标题,你可以试试这个:

在代码中使用属性获取网站或网站的好习惯:

 using(SPWeb objweb = properties.openweb())
 {
  string title = convert.ToString(properties.AfterProperties["Title"]);
  objweb.AllowUnsafeUpdates = true;
  SPList Menu_lookUp = mySite.Lists["Menu LookUp"];
  SPListItem newListItem = Menu_lookUp.Items.Add();
  newListItem["Applicable"] = title;
  newListItem.Update();
  objweb.AllowUnsafeUpdates = false;
 }

有一件事是您应该使用itemadded而不是itemadding。它很容易通过当前身份获得列表项目。

  SPList objlist = objweb.Lists[properties.ListTitle];
  SPListItem liCaseID =   objlist.Items.GetItemById(properties.ListItemId);
  //your excute your code.