Кнопка asp.net/linkbutton webcontrol динамически добавляется в загрузочный модальный кузов не возвращается
Я добавил динамическую ссылку linkhutton внутри html-таблицы и добавлю в кузовное тело. (linkbutton имеет закодированный linkbutton.click + = новый обработчик событий (Eventclick1);)
![enter image description here]()
но, когда я нажимаю на select, он не переходит к моей функции Eventclick1
. Он просто обновляет всю страницу. (он уже находится в обновлении). В любом случае, я могу сделать кнопку select
обратной почтой? (Я не хочу добавлять функцию клика на стороне клиента, например onclientclick = $('#otherbutton').click();
)
UPDATE
lnk_button.ID = this.ID + "AuditSelectedRow_" + Convert.ToString(l_loop);
lnk_button.Click += new EventHandler(OnAuditRowSelected);
lnk_button.Text = "Select";
WebControl wc_tdSelect = new WebControl(HtmlTextWriterTag.Td);
wc_tdSelect.Controls.Add(lnk_button);
Ответы
Ответ 1
У меня возникла аналогичная проблема с модальными всплывающими окнами, и проблема в основном (как указано выше), это последовательность, когда элемент управления asp.net визуализируется в стихах, когда регистрируются события и/или функции JS.
Один из способов решения заключается в том, чтобы вручную отредактировать элемент управления HTML, чтобы вы могли управлять им именем и при его рендеринге.
Ответ 2
Сначала убедитесь, что ваш пользовательский webcontrol внутри Updatepanel все еще существует в конце жизненного цикла страницы. Я предполагаю, что вы вызываете функцию, в которую вы добавляете ссылку на webcontrol. что-то вроде этого:
// Custom function Creating link buttons
private void CreateControls() {
// Create your link buttons here.
}
Теперь попробуйте снова вызвать ту же функцию внутри метода pre-init страницы, который гарантирует, что элемент управления все еще существует во время события нажатия кнопки. что-то вроде этого:
//Page Pre Init
protected void Page_PreInit(object sender, EventArgs e)
{
CreateControls();
}
Убедитесь, что ваш веб-элемент управления добавлен в панель обновления внутри той же функции, что и выше. Вот пример кода, который прикрепляет webcontrol к панели обновлений.
yourUpdatePanel.ContentTemplateContainer.Controls.Add(wc_tdSelect);
Я уверен, что на этот раз вы получите желаемый результат:)
Ответ 3
Как правило, вам следует избегать динамических элементов управления, вы должны добавить кнопку во время разработки внутри div и показать/скрыть, что div на стороне клиента для всплывающего окна.
Посмотрите на эту тему: -
fooobar.com/questions/341224/...
Ответ 4
Вы можете использовать кнопку ASP, как в вашем примере
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<!-- Modal -->
<asp:Label ID="Label1" runat="server" Text=""></asp:Label><br />
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">
Modal title</h4>
</div>
<div class="modal-body">
<asp:TextBox ID="TextBox1" runat="server" placeholder="First Name" class="form-control"></asp:TextBox><br />
<asp:TextBox ID="TextBox2" runat="server" placeholder="Middle Name" class="form-control"></asp:TextBox><br />
<asp:TextBox ID="TextBox3" runat="server" placeholder="Last Name" class="form-control"></asp:TextBox><br />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">
Close</button>
<%--<button type="button" class="btn btn-primary">
Save changes</button>--%>
<asp:Button Text="Save" OnClick="Submit" runat="server" />
</div>
</div>
</div>
</div>
</ContentTemplate>
</asp:UpdatePanel>
Ответ 5
Это следующее внутри pageload:
ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
scriptManager.RegisterPostBackControl(this.OnAuditRowSelected);