Я большую часть дня искал ответ на этот вопрос, но, похоже, я не смог найти ответ, так что вот моя ситуация. У меня есть ModalPopupExtender в GridView, в котором я динамически создаю несколько LinkButtons.
for (int i = 0; i < dtEmployees.Rows.Count; i++)
{
lbEmployee = new LinkButton();
lbEmployee.Text = dtEmployees.Rows[i][0].ToString();
EventInfo lbEmployeeEvent = lbEmployee.GetType().GetEvent("Click");
lbEmployeeEvent.AddEventHandler(lbEmployee, new EventHandler(this.AutomaticSearch));
lbEmployee.ID = "lbPnlEmployee" + manager + i;
phEmployees.Controls.Add(lbEmployee);
if (i != dtEmployees.Rows.Count - 1)
phEmployees.Controls.Add(new LiteralControl("<br />"));
}
так я продолжаю. Я обнаружил, что AddEventHandler был лучшим способом сделать это.
Моя проблема в том, что когда я нажимаю на кнопку LinkButton, я вижу, что страница выполняет обратную передачу, но ничего не происходит. Когда я нажимаю на LinkButton, он должен вызвать функцию AutomaticSearch , которая находится в фоновом коде.
Я поставил точку останова в указанной функции и обнаружил, что после нажатия кнопки LinkButton она никогда не проходит через нее, она переходит непосредственно к функции Page_load.
Вот как выглядит моя функция автоматического поиска:
protected void AutomaticSearch(object sender, EventArgs e)
{
LinkButton btn = new LinkButton();
btn = (LinkButton)sender;
//a substring is needed here because the ID of the link button for the employees is made dynamically
//and only the first part is hard coded (lbPnlEmployee)
// if you put a longer length, it will return an error because some IDs are smaller (ie: lbTitle)
switch (btn.ID.Substring(0,7))
{
case "lbDivis":
ddlSearchParameter.SelectedIndex = 5;
break;
case "lbLocat":
ddlSearchParameter.SelectedIndex = 6;
break;
case "lbTitle":
ddlSearchParameter.SelectedIndex = 3;
break;
case "lbPnlDi":
ddlSearchParameter.SelectedIndex = 5;
break;
case "lbPnlLo":
ddlSearchParameter.SelectedIndex = 6;
break;
case "lbPnlMa":
ddlSearchParameter.SelectedIndex = 0;
break;
case "lbPnlEm":
ddlSearchParameter.SelectedIndex = 0;
break;
}
txtValue.Text = btn.Text;
GridViewBinding("disp_nm", "ASC");
}