Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following code shows two event handlers:
- The first one (FieldAdded) updates existing list items when a field is added to a list.
- The second handler (ListDeleting) prevents the deletion of a list.
namespace ProductMarketing.ProductTaskEvents
{
public class ProductTaskEvents : SPListEventReceiver
{
public override void FieldAdded(SPListEventProperties properties)
{
SPField newField = properties.Field;
Guid fieldID = newField.Id;
if (newField.Type == SPFieldType.Text)
{
SPList thisList = properties.List;
foreach (SPListItem item in thisList.Items)
{
item[fieldID] = "Please update this existing item...";
item.Update();
}
}
base.FieldAdded(properties);
}
public override void ListDeleting(SPListEventProperties properties)
{
properties.ErrorMessage = "This list is critical to the marketing campaign and cannot be deleted.";
properties.Cancel = true;
}
}
}
The following event handler shows how to update properties of a SharePoint Web site when a new Web is created
namespace ProductMarketing.ProductMarketingWebEvents
{
public class ProductMarketingWebEvents : SPWebEventReceiver
{
public override void WebProvisioned(SPWebEventProperties properties)
{
SPWeb thisNewWeb = properties.Web;
thisNewWeb.AllowUnsafeUpdates = true;
thisNewWeb.Title = "Updated in Code";
thisNewWeb.Update();
thisNewWeb.AllowUnsafeUpdates = false;
base.WebProvisioned(properties);
}
}
}
The following code shows how to enumerate the alerts in a SharePoint site, and also how to enable or disable alerts.
Note: This code is designed to run on an application page that includes:
- An ASP.NET Label control called alertCount
- An ASP.NET button that includes a Click event handler set to the EnableAll funtion
- An ASP.NET button that includes a Click event handler set to the DisableAll funtion
namespace Alerter.Layouts.Alerter
{
public partial class Alerts : LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
int enabled = 0;
int disabled = 0;
SPWeb thisWeb = SPContext.Current.Web;
foreach (SPAlert alrt in thisWeb.Alerts)
{
if (alrt.Status == SPAlertStatus.On)
{
enabled++;
}
if (alrt.Status == SPAlertStatus.Off)
{
disabled++;
}
}
alertCount.Text = "Enabled Alerts: " + enabled.ToString()
+ "\nDisabled Alerts" + disabled.ToString();
}
protected void EnableAll(object sender, EventArgs e)
{
SPWeb thisWeb = SPContext.Current.Web;
foreach (SPAlert alrt in thisWeb.Alerts)
{
alrt.Status = SPAlertStatus.On;
alrt.Update();
}
}
protected void DisableAll(object sender, EventArgs e)
{
SPWeb thisWeb = SPContext.Current.Web;
foreach (SPAlert alrt in thisWeb.Alerts)
{
alrt.Status = SPAlertStatus.Off;
alrt.Update();
}
}
}
}
The following code creates a new SharePoint site (SPWeb object):
SPSite thisSite = SPContext.Current.Site;
thisSite.RootWeb.AllowUnsafeUpdates = true;
SPWeb hrWeb = thisSite.RootWeb.Webs.Add("HRWeb",
"Human Resources Web",
"For use by HR Employees",
1033,
"STS#0",
false,
false);
hrWeb.Dispose();
thisSite.RootWeb.AllowUnsafeUpdates = false;
The following code enumerates all of the services provided by the current farm's SPFarm object and displays them in a treeview control in an application page.
Note: The code relies on there being a tree-view named farmContents in the application page.
namespace Hierarchy.Layouts.Hierarchy
{
public partial class HierarchyViewer : LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
SPFarm thisFarm = SPFarm.Local;
TreeNode node;
farmContent s.Nodes.Clear();
foreach(SPService svc in thisFarm.Services)
{
node = new TreeNode();
node.Text = "(Type=" + svc.TypeName + ") " + svc.DisplayName;
farmContents.Nodes.Add(node);
}
farmContents.CollapeAll();
}
}
The following code enumerates all of the services, web applications, site collections, sites, and lists in a SharePoint farm, and displays them in a treeview control in an application page.
Note: The code relies on there being a tree-view named farmContents in the application page. Also note how the addWebs() function is called recursively to ensure sites and subsites are enumerated and displyed in the treeview.
using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.Administration;
namespace Hierarchy.Layouts.Hierarchy
{
public partial class HierarchyViewer : LayoutsPageBase
{
protected void Page_Load(object sender, EventArgs e)
{
SPFarm thisFarm = SPFarm.Local;
TreeNode node;
farmContents .Nodes.Clear();
foreach(SPService svc in thisFarm.Services)
{
node = new TreeNode();
node.Text = "(Type=" + svc.TypeName + ") " + svc.DisplayName;
farmContents.Nodes.Add(node);
TreeNode svcNode = node;
if (svc is SPWebService)
{
SPWebService webSvc = (SPWebService)svc;
foreach (SPWebApplication webApp in webSvc.WebApplications)
{
node = new TreeNode();
node.Text = webApp.DisplayName;
svcNode.ChildNodes.Add(node);
TreeNode webAppNode = node;
foreach (SPSite site in webApp.Sites)
{
try {
node = new TreeNode();
node.Text = site.Url;
webAppNode.ChildNodes.Add(node);
TreeNode siteNode = node;
site.CatchAccessDeniedException = false;
try
{
node = new TreeNode(site.RootWeb.Title, null, null, site.RootWeb.Url, "_self");
siteNode.ChildNodes.Add(node);
TreeNode parentNode = node;
foreach (SPList list in site.RootWeb.Lists)
{
node = new TreeNode(list.Title, null, null, list.DefaultViewUrl, "_self");
parentNode.ChildNodes.Add(node);
}
foreach (SPWeb childWeb in site.RootWeb.Webs)
{
try {
addWebs(childWeb, parentNode);
} finally
{
childWeb.Dispose();
}
}
}
catch
{ }
}
finally
{
site.Dispose();
}
}
}
}
}
farmContents.CollapseAll();
}
void addWebs(SPWeb web, TreeNode parentNode)
{
TreeNode node;
node = new TreeNode(web.Title, null, null, web.Url, "_self");
parentNode.ChildNodes.Add(node);
parentNode = node;
foreach (SPList list in web.Lists)
{
node = new TreeNode(list.Title, null, null, list.DefaultViewUrl, "_self");
parentNode.ChildNodes.Add(node);
}
foreach (SPWeb childWeb in web.Webs)
{
try {
addWebs(childWeb, parentNode);
} finally {
childWeb.Dispose();
}
}
}
}
}