Событие ASP.NET Click не работает для нескольких кнопок, что создано в кнопке управления вкладкой
Я новичок в 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.**
}
Попробуй это
Button btn = new Button();
btn.Click += new RoutedEventHandler(Button1_Click);
panel1.Controls.Add(btn);
Вероятно, ваша проблема заключается в том, что кнопка не существует, когда обратный вызов Button1_Click запущен... Веб-формы Asp.net представляют собой несколько пропущенную абстракцию по HTTP, и поэтому ее немного сложно иногда расшифровать, но я ожидаю происходит то, что, когда происходит обратная связь с нажатием кнопки, кнопка не на самом деле EXIST в дереве управления, потому что эта кнопка добавляется только в дерево управления при нажатии элемента управления вкладкой. Так как кнопка не существует в postback, веб-формы не знают, что делать с событием, поэтому он игнорирует это...
Если ваши кнопки должны создаваться динамически, подумайте о том, чтобы заставить их сделать некоторый javascript для редактирования какого-либо скрытого поля или чего-то еще, значение которого вы можете проверить в методе Page_Load, а затем делать то, что вы хотите сделать функционально с этим значением.
Если они НЕ динамические, и вместо этого будут одинаковыми для каждой загрузки страницы (но разные для каждой вкладки - то есть, когда страница загружается, вы рисуете некоторую информацию из db, чтобы определить, какие кнопки будут отображаться, но это будет не изменяйте от обратной передачи до обратной передачи на той же странице), а затем подумайте о создании кнопок в событии Page_Load, а не внутри события, которое возникает при создании вкладки.
ALTERNATIVELY, так как в вашем комментарии вы предполагаете, что кнопки будут использоваться для открытия нового окна, почему бы просто не сделать кнопки этой клиентской стороны, то есть с помощью javascript window.open команд. Тогда вам даже не нужно возвращать на сервер вообще...