在 .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(对象发送者,EventArgs e)方法的内部,我可以检索单击的按钮吗? ID (在本例中为 btnEntrata 值)应该是完美的。
我想使用此方法来处理对不同按钮的单击,而不是为每个按钮创建一个新方法。
我可以做这样的事情吗?如何获取点击按钮的ID?
答案 0 :(得分: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);
}
答案 1 :(得分:1)
“对象发送者”是一个通用对象,代表正在调用该方法的对象,在本例中为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);
}