Кнопка 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">&times;</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);