如何从处理此事件的方法中将单击按钮的 ID 检索到 SharePoint 2013 Web 部件中?
Posted
技术标签:
【中文标题】如何从处理此事件的方法中将单击按钮的 ID 检索到 SharePoint 2013 Web 部件中?【英文标题】:How can I retrieve the ID of the clicked button from the method handling this event into a SharePoint 2013 Web Part? 【发布时间】:2019-05-12 12:29:12 【问题描述】:我是 .NET 和 SharePoint 的新手(我正在使用 SharePoint 2013),在开发 Web 部件 时遇到以下问题>.
在我的 Web 部件中,我有这个 ImageButton:
ImageButton btnApplica = new ImageButton();
btnApplica.ToolTip = "Documento in Entrata";
btnApplica.Click += btnApplica_Click_Scelta_Campi_Etichetta;
btnApplica.ID = "btnEntrata";
btnApplica.ImageUrl = "/_layouts/15/images/MyProject/Default/Ribbon/DocEntrataRibbon.png";
如您所见,单击此按钮是通过 btnApplica_Click_Scelta_Campi_Etichetta() 方法执行的,这个:
void btnApplica_Click_Scelta_Campi_Etichetta(object sender, EventArgs e)
Debug.Print("btnApplica_Click_Scelta_Campi_Etichetta START");
SPWeb contextWeb = SPContext.Current.Web;
string url = contextWeb.Url;
string link = url + "/ARXEIA WEBPART/Carica documento.aspx?mode=scelta_campi_facoltativi_etichetta&obj=" + obj;
SPUtility.Redirect(link, SPRedirectFlags.Default, Context);
它工作正常。我的问题是:从这个 btnApplica_Click_Scelta_Campi_Etichetta(object sender, EventArgs e) 方法的内部,我可以检索单击的按钮吗? ID(在本例中为 btnEntrata 值)应该是完美的。
我想用这个方法来处理不同按钮的点击,而不是为每个按钮创建一个新方法。
我可以这样做吗?如何检索被点击按钮的 ID?
【问题讨论】:
【参考方案1】:你可以将sender变量解析为一个按钮,然后获取ID例如:
void btnApplica_Click_Scelta_Campi_Etichetta(object sender, EventArgs e)
Debug.Print("btnApplica_Click_Scelta_Campi_Etichetta START");
ImageButton btnApplica = (ImageButton) sender;
String idBtn = btnApplica.ID;
SPWeb contextWeb = SPContext.Current.Web;
string url = contextWeb.Url;
string link = url + "/ARXEIA WEBPART/Carica documento.aspx?mode=scelta_campi_facoltativi_etichetta&obj=" + obj;
SPUtility.Redirect(link, SPRedirectFlags.Default, Context);
【讨论】:
【参考方案2】:“object sender”是一个通用对象,表示调用该方法的对象,在本例中为 ImageButton。您不能直接访问发件人的类变量,因为“对象”几乎是任何对象的占位符。为了能够访问您的对象变量,您可以将其转换为您期望的对象。
void btnApplica_Click_Scelta_Campi_Etichetta(object sender, EventArgs e)
Debug.Print("btnApplica_Click_Scelta_Campi_Etichetta START");
string id;
if(sender.GetType() == typeof(ImageButton))
ImageButton button = (ImageButton)sender; // This is a cast
id = button.ID;
SPWeb contextWeb = SPContext.Current.Web;
string url = contextWeb.Url;
string link = url + "/ARXEIA WEBPART/Carica documento.aspx?mode=scelta_campi_facoltativi_etichetta&obj=" + obj;
SPUtility.Redirect(link, SPRedirectFlags.Default, Context);
【讨论】:
以上是关于如何从处理此事件的方法中将单击按钮的 ID 检索到 SharePoint 2013 Web 部件中?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 WatchOs 中的推送通知中获取数据并处理推送通知操作按钮单击事件
如何在 C# 中使用 Linq to JSON 在单击按钮时检索下一个和上一个 id