我遇到了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>
提前感谢您的帮助
答案 0 :(得分:1)
按照以下添加一个按钮
<asp:Button Text="targetbutton" ID="tgtbtn" runat="server" Style="display: none" />
在modulpopup的targetcontrolid中设置此按钮的id(因为它不能为null)
并在btnStockist的点击事件中
按代码
打开您的modulapopupprotected void btnStockist_Click(object sender, EventArgs e)
{
mpeStockist.Show();
}