Кнопка asp: ModalPopupExtender, вызывающая обратную передачу на главной странице - PullRequest
0 голосов
/ 17 марта 2012

У меня есть страница, на которой я пытаюсь использовать asp: ModalPopupExtender. Я использую всплывающее окно в качестве инструмента поиска, поэтому оно имеет пользовательский элемент управления с текстовым полем, кнопкой поиска, видом сетки и кнопкой ОК. Когда пользователь вводит поисковый запрос и нажимает кнопку «Поиск», происходит обратная передача, в результате чего всплывающее окно закрывается. Я не хочу, чтобы всплывающее окно закрывалось, пока пользователь не нажмет кнопку ОК. Я могу использовать всплывающее окно точно так же, как на простой странице, которая не имеет никакой другой функциональности, и она прекрасно работает. Я немного озадачен.

Любая помощь будет принята с благодарностью.

Вот код на странице, содержащей всплывающее окно.

<asp:Panel ID="ApplicationPicker" runat="server" CssClass="hidden">
                                                <asp:Button ID="Button1" runat="server" Text="Search for Application" />
                                                <asp:Label ID="ApplicationID" runat="server"></asp:Label>
                                                <asp:Panel ID="Panel1" runat="server" CssClass="modalBackground" style="display:none;"> 
                                                    <appPicker:ApplicationPicker ID="thisAppPicker" runat="server" />
                                                    <asp:Button ID="btnOk" runat="server" Text="Ok" OnClick="OkButton_Clicked" /> 
                                                <asp:Button ID="btnClose" runat="server" Text="Close Me" /> 
                                                </asp:Panel> 

                                                <asp:ModalPopupExtender 
                                                DropShadow="true" 
                                                CancelControlID="btnClose" 
                                                runat="server" 
                                                PopupControlID="Panel1" 
                                                id="ModalPopupExtender1" 
                                                TargetControlID="Button1" /> 
                                            </asp:Panel>

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

<asp:Panel ID="pDelegateBody" BackColor="White" runat="server">
<table>
    <tr>
        <td><asp:Label CssClass="indentedTextBold" ID="ApplicationSearchLabel" runat="server" Text="Search for:"></asp:Label></td>
        <td><asp:TextBox ID="txtSearch" runat="server" Width="300px" Visible="true" /><asp:Label ID="ValidationLabel" runat="server" Text="Please enter at least 3 characters to search." ForeColor="Red" Visible="false"></asp:Label></td>

        <td><asp:Button ID="btnSearch" runat="server" Text="Search" CssClass="Buttons" onclick="Search_Click" /></td>
    </tr>
    <tr>
        <td colspan="4">
        <asp:Panel ID="PanelProjectPicker" runat="server" Height="220px" Width="600px" ScrollBars="Vertical" BorderStyle="Solid" BorderWidth="1" BorderColor="GrayText">
            <telerik:RadGrid ID="RadGrid1" runat="server" AllowSorting="False" 
                AutoGenerateColumns="False" CellPadding="0" DataKeyNames="LANID" 
                EnableEmbeddedSkins="false" onitemcommand="RadGrid1_ItemCommand" 
                ShowHeader="true" Skin="WF" ViewStateMode="Enabled" Width="580px" ClientIDMode="AutoID">
                <MasterTableView Font-Size="X-Small">
                    <Columns>
                        <telerik:GridBoundColumn DataField="ApplicationID" HeaderText="ID" Visible="False" />
                        <telerik:GridBoundColumn DataField="Name" HeaderText="Display Name" SortExpression="DISPLAY_NAME" />
                    </Columns>
                </MasterTableView>
                <ClientSettings EnablePostBackOnRowClick="true" EnableRowHoverStyle="True">
                    <Selecting AllowRowSelect="true" />
                </ClientSettings>
                <HeaderStyle BackColor="#666666" Font-Names="verdana, arial" Font-Size="Small" 
                    Height="20px" />
            </telerik:RadGrid>
        </asp:Panel>
        <asp:Label ID="appID" runat="server"></asp:Label>
        </td>
    </tr>
</table>

и вот код для средства выбора приложений

protected void RadGrid1_ItemCommand(object source, GridCommandEventArgs e)
    {
        if (e.CommandName == "RowClick")
        {
            GridDataItem item = RadGrid1.Items[e.Item.ItemIndex];
            appID.Text = item["ApplicationID"].Text;
        }
    }
    protected void loadData()
    {
        if (Session["User"] != null)
        {
            currentUser = (User)Session["User"];
        }

        if (txtSearch.Text != "" && txtSearch.Text.Length > 2)
        {
            List<Application> AllApplications = new List<Application>();

            if (UserController.IsUserWOT((User)Session["User"]))
            {
                AllApplications = BusinessUtility.GetApplications();
            }
            else
            {
                AllApplications = BusinessUtility.GetApplicationsByManagerLanId(currentUser.LanID);
            }

            List<Application> filteredApplications = new List<Application>();

            filteredApplications = AllApplications.Where(x => x.Name.ToString().ToUpper().Contains(txtSearch.Text.ToUpper())).ToList();

            if (filteredApplications.Count > 0)
            {
                RadGrid1.DataSource = filteredApplications;
                RadGrid1.DataBind();
            }
        }
    }

    protected void Search_Click(object sender, EventArgs e)
    {
        if (txtSearch.Text.Length < 3)
        {
            ValidationLabel.Visible = true;
        }
        else
        {
            ValidationLabel.Visible = false;
            RadGrid1.DataSource = "";
            RadGrid1.DataBind();
            loadData();
            PanelProjectPicker.Visible = true;
        }
    }

1 Ответ

0 голосов
/ 17 марта 2012

Вы можете попробовать это:

В другом состоянии Search_Click, вы можете добавить ModalPopupExtender1.show();

...