public static void HandleItemDeleting(SPItemEventProperties properties) { var webURL = properties.ListItem.Web.Url; //if we are dealing with a document set, we need to do a few things if (properties.ListItem.File != null && SPListItemExtensions.IsDocumentSetItem(properties.ListItem)) { //1. handle our SetItemID if (properties.BeforeProperties["SetItemID"] == null) { SPList docSetList = properties.List; SPQuery query = new SPQuery(); query.Folder = properties.ListItem.File.ParentFolder; query.Query = "<Where><Neq><FieldRef Name='ID' /><Value Type='Integer'>" + properties.ListItem.ID + "</Value></Neq></Where><OrderBy><FieldRef Name='SetItemID' Ascending='TRUE' /></OrderBy>"; SPListItemCollection Items = docSetList.GetItems(query); if (Items.Count > 0) { var j = 1; SPListItem item = null; for (int i = 0; i <= Items.Count - 1; i++) { item = Items[i]; item["SetItemID"] = j; item.Update(); j = j + 1; } } } } }
public static void HandleItemAdded(SPItemEventProperties properties) { bool updateRequired = false; string webURL = properties.ListItem.Web.Url; //if we are dealing with a document set, we need to do a few things int nextNumber = 0; if (properties.ListItem.File != null && SPListItemExtensions.IsDocumentSetItem(properties.ListItem)) { // handle our SetItemID if (properties.ListItem["SetItemID"] == null) { SPList docSetList = properties.List; SPQuery query = new SPQuery(); query.RowLimit = 1; query.Folder = properties.ListItem.File.ParentFolder; query.Query = "<OrderBy><FieldRef Name='SetItemID' Ascending='FALSE' /></OrderBy>"; SPListItemCollection Items = docSetList.GetItems(query); if (Items.Count > 0) { SPListItem item = Items[0]; nextNumber = Convert.ToInt32(item["SetItemID"]) + 1; } properties.ListItem["SetItemID"] = nextNumber.ToString(); updateRequired = true; } } else { if (properties.ListItem["SetItemID"] != null && !string.IsNullOrEmpty(properties.ListItem["SetItemID"].ToString())) { properties.ListItem["SetItemID"] = null; updateRequired = true; } } if (updateRequired) { properties.ListItem.Update(); } }