ASP.NET AJAX ModalPopupExtender - 用错误的按钮打开

时间:2011-12-29 09:42:07

标签: asp.net asp.net-ajax ajaxcontroltoolkit modalpopupextender

我遇到了AJAX ModalPopupExtender控件的问题。我要做的是单击一个按钮,使用Yahoo API触发邮政编码查找按钮单击事件,在ShowModalDialog框中的asp面板中显示它,然后关闭对话框。我还需要页面上的单独按钮,使用与此完全分开的表单提交信息。

我已按如下方式设置目标按钮:

<asp:Button ID="btnStockist" runat="server" BackColor="#2C3473" OnClick="btnStockist_Click" />

modalpopup如下:

<ajax:ModalPopupExtender ID="mpeStockist" runat="server" okcontrolid="btnOkay" targetcontrolid="btnStockist" popupcontrolid="pnlDisplay" 
                            popupdraghandlecontrolid="PopupHeader" drag="true" backgroundcssclass="ModalPopupBG" ></ajax:ModalPopupExtender> 

实际发生的情况是,当单击目标按钮时,弹出窗口会打开,但事件不会触发(没有完成邮政编码查找)。但是,单击同一页面上单独的,不相关的按钮会触发事件,并且查找工作完美。我能够正常关闭对话框。我尝试用CSS隐藏目标按钮作为快速解决方法,但问题是页面上的任何其他按钮似乎触发查找方法和modalpopup无论他们的点击事件被编程为什么,我需要他们工作分开。

如果它有用,面板代码在这里:

<asp:Panel ID="pnlDisplay" style="display:none" runat="server">
                <div class="PopupContainer">
                    <div class="PopupBody">                        
                        <div align="center">Local Suppliers</div>
                        <br /><br />
                        <asp:label ID="lblError" runat="server"></asp:label>
                        <asp:UpdatePanel ID="upAlternatives" runat="server" UpdateMode="Conditional">
                            <ContentTemplate>
                            <asp:DataList ID="dlStockist_Select" runat="server">
                                <HeaderTemplate>
                                    <table cellpadding="5" width="680">
                                        <tr>
                                            <td>Name</td>
                                            <td>Address</td>
                                            <td>Town/City</td>
                                            <td>Miles (Approx)</td>                                                                        
                                        </tr>
                                </HeaderTemplate>
                                <ItemTemplate>
                                    <tr>
                                        <td><%# DataBinder.Eval(Container.DataItem, "CNAM") %></td>
                                        <td><%# DataBinder.Eval(Container.DataItem, "CADD1") %></td>
                                        <td><%# DataBinder.Eval(Container.DataItem, "CADD3")%></td>                                
                                        <td align="center"><%# DataBinder.Eval(Container.DataItem, "Distance")%></td>                          
                                    </tr>
                                </ItemTemplate>
                                <FooterTemplate>
                                    </table>            
                                </FooterTemplate>
                            </asp:DataList>
                            </ContentTemplate>
                        </asp:UpdatePanel>
                        <asp:LinkButton ID="btnOkay" runat="server" visible="true" Text="Close" CommandName="Update" BorderColor="#FFFFFF" BackColor="#000000" 
                            BorderWidth="3" BorderStyle="Double" ForeColor="White" Font-Size="13pt" style="cursor: pointer; padding: 1px 15px 1px 15px; 
                            margin-top: 10px;" Font-Underline="False"></asp:LinkButton> 
                    </div>
                </div>
            </asp:Panel>

提前感谢您的帮助

1 个答案:

答案 0 :(得分:1)

按照以下添加一个按钮

<asp:Button Text="targetbutton" ID="tgtbtn" runat="server" Style="display: none" />

在modulpopup的targetcontrolid中设置此按钮的id(因为它不能为null)

并在btnStockist的点击事件中

按代码

打开您的modulapopup
protected void btnStockist_Click(object sender, EventArgs e)
{
   mpeStockist.Show();
}