繁体   English   中英

如何从处理此事件的方法中将单击按钮的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?

我在.NETSharePoint (我正在使用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?

您可以将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);

}

“对象发送者”是一个通用对象,代表正在调用该方法的对象,在本例中为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);

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM