Событие ASP.NET Click не работает для нескольких кнопок, что создано в кнопке управления вкладкой

74
8

Я новичок в ASP.NET, и у меня есть проблема.

В моем коде событие btn.Click не работает для нескольких кнопок, что создано в кнопке управления вкладками. Можете ли вы, ребята, мне помочь? Благодаря,

<asp:Button Text="TAB MENU" BorderStyle="None" ID="Tab" CssClass="Initial" runat="server" OnClick="Tab_Click" />

<asp:Panel ID="panel1" runat="server" Direction="LeftToRight" HorizontalAlign="Left"></asp:Panel>

protected void Tab_Click(object sender, EventArgs e) {

foreach (...) {

Button btn = new Button();
btn.Click += Button1_Click;
panel1.Controls.Add(btn);
}
}

protected void Button1_Click(object sender, EventArgs e) {
**some code here! but does not work.**
}

спросил(а) 2021-01-28T01:26:35+03:00 4 недели, 1 день назад
1
Решение
74

Попробуй это

Button btn = new Button(); 
btn.Click += new RoutedEventHandler(Button1_Click);
panel1.Controls.Add(btn);

ответил(а) 2021-01-28T01:26:35+03:00 4 недели, 1 день назад
60

Вероятно, ваша проблема заключается в том, что кнопка не существует, когда обратный вызов Button1_Click запущен... Веб-формы Asp.net представляют собой несколько пропущенную абстракцию по HTTP, и поэтому ее немного сложно иногда расшифровать, но я ожидаю происходит то, что, когда происходит обратная связь с нажатием кнопки, кнопка не на самом деле EXIST в дереве управления, потому что эта кнопка добавляется только в дерево управления при нажатии элемента управления вкладкой. Так как кнопка не существует в postback, веб-формы не знают, что делать с событием, поэтому он игнорирует это...

Если ваши кнопки должны создаваться динамически, подумайте о том, чтобы заставить их сделать некоторый javascript для редактирования какого-либо скрытого поля или чего-то еще, значение которого вы можете проверить в методе Page_Load, а затем делать то, что вы хотите сделать функционально с этим значением.

Если они НЕ динамические, и вместо этого будут одинаковыми для каждой загрузки страницы (но разные для каждой вкладки - то есть, когда страница загружается, вы рисуете некоторую информацию из db, чтобы определить, какие кнопки будут отображаться, но это будет не изменяйте от обратной передачи до обратной передачи на той же странице), а затем подумайте о создании кнопок в событии Page_Load, а не внутри события, которое возникает при создании вкладки.

ALTERNATIVELY, так как в вашем комментарии вы предполагаете, что кнопки будут использоваться для открытия нового окна, почему бы просто не сделать кнопки этой клиентской стороны, то есть с помощью javascript window.open команд. Тогда вам даже не нужно возвращать на сервер вообще...

ответил(а) 2021-01-28T01:26:35+03:00 4 недели, 1 день назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема