Hi
I read this blog (Eric Stallworth) and wanted to put it in to a webpart with a GridView.
This is the code that made it happen
protected override void CreateChildControls()
{
if (!_error)
{
try
{
base.CreateChildControls();
ds = getAlerts();
gview.DataSource = ds.Tables["Alerts"];
gview.AutoGenerateColumns = false;
gview.AllowSorting = true;
dataView = new DataView(ds.Tables["Alerts"]);
BoundField alertTitleField = new BoundField();
alertTitleField.HeaderText = "Title";
alertTitleField.DataField = "AlertTitle";
BoundField alertTemplateNameField = new BoundField();
alertTemplateNameField.HeaderText = "Alert Template";
alertTemplateNameField.DataField = "AlertTemplateName";
BoundField alertTypeField = new BoundField();
alertTypeField.HeaderText = "Alert Type";
alertTypeField.DataField = "AlertType";
BoundField alertStatusField = new BoundField();
alertStatusField.HeaderText = "Alert Status";
alertStatusField.DataField = "AlertStatus";
BoundField alertEventTypeField = new BoundField();
alertEventTypeField.HeaderText = "Alert Eventtype";
alertEventTypeField.DataField = "AlertEventType";
BoundField alertFrequencyField = new BoundField();
alertFrequencyField.HeaderText = "Alert Frequency";
alertFrequencyField.DataField = "AlertFrequency";
HyperLinkField linkColumn = new HyperLinkField();
linkColumn.HeaderText = "Link to list";
linkColumn.DataTextField = "AlertLink";
linkColumn.DataNavigateUrlFields = new string[] { "AlertLink" };
linkColumn.DataNavigateUrlFormatString = "{0}";
gview.Columns.Add(alertTitleField);
gview.Columns.Add(alertTemplateNameField);
gview.Columns.Add(alertTypeField);
gview.Columns.Add(alertStatusField);
gview.Columns.Add(alertEventTypeField);
gview.Columns.Add(alertFrequencyField);
gview.Columns.Add(linkColumn);
gview.DataBind();
this.Controls.Add(gview);
}
catch (Exception ex)
{
HandleException(ex);
}
}
}
public DataSet getAlerts()
{
DataSet dsResult = new DataSet();
DataTable tbl = new DataTable("Alerts");
tbl.Columns.Add("AlertTitle", typeof(string));
tbl.Columns.Add("AlertTemplateName", typeof(string));
tbl.Columns.Add("AlertType", typeof(string));
tbl.Columns.Add("AlertStatus", typeof(string));
tbl.Columns.Add("AlertEventType", typeof(string));
tbl.Columns.Add("AlertFrequency", typeof(string));
tbl.Columns.Add("AlertLink", typeof(string));
using (SPSite site = SPContext.Current.Site)
{
for (int i = 0; i < site.AllWebs.Count; i++)
{
SPWeb web = site.AllWebs[i];
SPUser user = web.CurrentUser;
SPAlertCollection altCol;
if (user.IsSiteAdmin)
{
altCol = web.Alerts;
AddAlertsToDataSet(ref tbl, altCol);
}
else
{
altCol = user.Alerts;
AddAlertsToDataSet(ref tbl, altCol);
}
}
}
dsResult.Tables.Add(tbl);
return dsResult;
}
public void AddAlertsToDataSet(ref DataTable tbl, SPAlertCollection altCol)
{
DataRow row;
foreach (SPAlert alert in altCol)
{
row = tbl.NewRow();
row["AlertTitle"] = alert.Title;
row["AlertTemplateName"] = alert.AlertTemplateName;
row["AlertType"] = alert.AlertType.ToString();
row["AlertStatus"] = alert.Status.ToString();
row["AlertEventType"] = alert.Status.ToString();
row["AlertFrequency"] = alert.AlertFrequency.ToString();
row["AlertLink"] = alert.List.ParentWeb.Url + "/" + alert.ListUrl;
tbl.Rows.Add(row);
}
}
Happy coding Jacob