ASP.NET показывает ModalPopupExtender из кнопок, созданных в Code-Behind - PullRequest
0 голосов
/ 18 марта 2011

Привет, у меня есть modalPopupExtender на моей веб-странице aspx, указывающий на Panel, и в Code-Behind я создаю кнопки, которые я хочу, чтобы они отображали modalPopup, поэтому я имею:просто делает PostBack, даже если я поставлю "вернуть ложь";в конце прошлого кода.

Ответы [ 3 ]

1 голос
/ 18 марта 2011

Я думаю, что что-то понял, хотя я не уверен, что это лучшее решение.

Это мой код:

protected void Page_Load(object sender, EventArgs e)
    {
        Button btn = new Button();
        btn.Text = "Hello World!";
        btn.OnClientClick = "javascript:$get('" + HiddenField.ClientID + "').click(); return false;";
        PanelHello.Controls.Add(btn);
    }

, и это моя страница ASPX:

<asp:HiddenField ID="HiddenField" runat="server" />
<asp:ModalPopupExtender ID="modalPopup" runat="server" TargetControlID="HiddenField"
    PopupControlID="Panel" DynamicServicePath="" Enabled="True" />
<asp:Panel ID="Panel" runat="server">
    <h1>
        Hello World!</h1>
</asp:Panel>

И это заставляет модальное всплывающее окно без отправки назад = D!

0 голосов
/ 18 марта 2011

Мне кажется, я вижу твою проблему. Вы не цитируете ClientID в своем вызове JS, так что на самом деле это просто сбой - поэтому return false также не работает. Если единственной проблемой была обратная передача, вы все равно должны увидеть свое всплывающее окно, прежде чем страница вернется к себе.

Ваш код:

buttonX.OnClientClick = "javascript:$get(" + modalPopup.ClientID + ").show();";

Добавит "javascript:$get(ctl123).show();" (я использую ctl123 в качестве имени-заполнителя для любого вашего ClientID) - идея заключается в том, что ошибка происходит, потому что у вас должно быть следующее:

buttonX.OnClientClick = "javascript:$get('" + modalPopup.ClientID + "').show();";

Который выдаст "javascript:$get('ctl123').show();"

Разница в том, что во втором указан контрольный идентификатор.

Попробуйте и добавьте return false; для предотвращения обратной передачи. Вот так:

buttonX.OnClientClick = "javascript:$get('" + modalPopup.ClientID + "').show(); return false;";
0 голосов
/ 18 марта 2011

Попробуйте это

buttonX.OnClick = "javascript: preventDefault(); $get(" + modalPopup.ClientID + ").show();";
...