Запустите modaldialog со стороны сервера - PullRequest
1 голос
/ 07 апреля 2011

Я создал 2 модальдиалога. Моя проблема в том, что мне нужно показать их со стороны сервера, если выполнены несколько условий (после нажатия кнопки). Я гуглил и нашел решение добавить расширитель в невидимый элемент управления и запустить его из кода. Но так как ничего не видно, я полагаю, что делаю что-то не так. Я попробовал сделать это, щелкнув по кнопке ссылки, чтобы увидеть, работает ли это, и показывает ли это диалоговое окно.

Заранее спасибо.

Markup:

<asp:LinkButton ID="lnkPrompts" runat="server">LinkButton</asp:LinkButton>

<asp:ModalPopupExtender ID="lnkPrompts_ModalPopupExtender" runat="server"
    BackgroundCssClass="modalBackground" Enabled="True" 
    TargetControlID="lnkPrompts" PopupControlID="pnlPromptModal"
    OkControlID="pnlPromptModal">
</asp:ModalPopupExtender>

<asp:Panel ID="pnlPromptModal" runat="server" Width="350px" Height="70px"
    CssClass="modalPopup" Style="display: none;">
     Some text
    <div style="">
        <asp:Button ID="btnModalPromptOk" runat="server" Text="OK" />
    </div>
</asp:Panel>

На стороне сервера:

protected void btnViewPrompts_Click(object sender, EventArgs e)
{
    if (conditionMet)
    {
        Response.Redirect("IvrPrompts.aspx?Id=" + breakdownView.Id);
    }
    else
    {
        //ToDo: Show modaldialogbox
        lnkPrompts_ModalPopupExtender.Show(); //This does nothing...
    }
}

Ответы [ 3 ]

0 голосов
/ 07 апреля 2011

Ну, кажется, это работает. Единственная проблема заключалась в том, что у меня был Response.Redirect сразу после строки lnkPrompts_ModalPopupExtender.Show();, и это была проблема. Диалог никогда не показывался. После комментирования Redirect все работает как надо.

В любом случае, извините, что потратил ваше время. В следующий раз, когда вы попробуете что-то новое, вам нужно больше спать

0 голосов
/ 07 апреля 2011

Когда я использовал ModalPopupExtender, как вы описываете, я обернул их в UpdatePanel.Это единственный способ заставить серверную часть «инициировать» действие, которое вы описываете.

0 голосов
/ 07 апреля 2011

Это нужно сделать из javascript на стороне клиента. Сервер никогда не может инициировать действия на клиенте, но клиент может спросить сервер, выполнено ли условие, и предпринять действия на его основе. Вероятно, вы захотите сделать это, выполнив фоновый вызов Ajax от клиента к серверу при нажатии кнопки.

...