Это интересный способ снятия шкуры с кошки. Вы спрашиваете не «Что я сделал не так», а «каковы вероятные вещи, которые я мог сделать неправильно».
Интересно, потому что я думаю, что это показывает, что вы хотите понять это сами, но также потому, что мне трудно придумывать предложения, без каких-либо подсказок. Существует почти неограниченное количество возможностей.
Если форма отправляется обратно, событие запускается. Я думаю, что это синоним. Если вы не видите, как вызывается обработчик событий, возможно, вы смотрите не в том месте.
Я считаю этот метод полезным в таких ситуациях. Я вызываю его из page_load, и он показывает мне детали того, что вызвало событие, до того, как будут вызваны обработчики событий.
/// <summary>
/// Find which control caused the post back
/// </summary>
/// <param name="page"></param>
/// <returns></returns>
public static System.Web.UI.Control
GetPostBackControl(System.Web.UI.Page page) {
Control control = null;
string ctrlname = page.Request.Params["__EVENTTARGET"];
if (ctrlname != null && ctrlname != String.Empty) {
control = page.FindControl(ctrlname);
}
// if __EVENTTARGET is null, the control is a button type and we need to
// iterate over the form collection to find it
else {
string ctrlStr = String.Empty;
Control c = null;
foreach (string ctl in page.Request.Form) {
// handle ImageButton controls ...
if (ctl.EndsWith(".x") || ctl.EndsWith(".y")) {
ctrlStr = ctl.Substring(0, ctl.Length - 2);
c = page.FindControl(ctrlStr);
}
else {
c = page.FindControl(ctl);
}
if (c is System.Web.UI.WebControls.Button ||
c is System.Web.UI.WebControls.ImageButton) {
control = c;
break;
}
}
}
return control;
}