SharePoint列表中删除Menu的Post事件
主要是继承MenuItemTemplate类,并且实现IPostBackEventHandler接口,然后通过委托,定义一个Post事件,并且添加可以指定这个事件的处理代码,然后完成我们需要的操作。具体实现如下:
public delegate void MenuItemEventHandler(string id);
public class SPDeletePostBackMenuTemplate : MenuItemTemplate, IPostBackEventHandler
{
public event MenuItemEventHandler OnPostBack;
protected override void EnsureChildControls()
{
if (!this.ChildControlsCreated)
{
base.EnsureChildControls();
if (string.IsNullOrEmpty(this.ClientOnClickUsingPostBackEvent))
{
this.ClientOnClickUsingPostBackEventFromControl(this, "%ItemID%");
}
}
}
public void RaisePostBackEvent(string eventArgument)
{
MenuItemEventHandler handler = this.OnPostBack;
if (handler != null)
{
handler(eventArgument);
}
}
}
具体的使用方法如下:
SPDeletePostBackMenuTemplate deleteMenuTemplate = new SPDeletePostBackMenuTemplate();
deleteMenuTemplate .OnPostBack +=new MenuItemEventHandler(deleteMenuTemplate_OnPostBack);
deleteMenuTemplate .ClientOnClickPostBackConfirmation = "Are you sure you want delete this Item?";
deleteMenuTemplate .ImageUrl = "_layouts/images/DELETE.GIF";
deleteMenuTemplate .ID = "DeleteMenu";
deleteMenuTemplate .Text = "Delete";
itemMenu.Controls.Add(deleteMenuTemplate);