我创建了一个usercontrol(.ascx),用于我的asp.net网站(不是mvc)。该控件有几个文本框,允许用户输入新客户。它有两个按钮,一个用于添加客户,另一个用于取消控制。我通过使用“ModalPopupExtender”调用显示控件,其代码如下所示:
这是在updatePanel:
<asp:ModalPopupExtender ID="ModalPopupExtender2" runat="server" TargetControlID="hiddenButton"
PopupControlID="Panel3" BackgroundCssClass="modalBackground" DropShadow="true"/>
这是Panel3标记:
<asp:Panel ID="Panel3" runat="server" Style="display: none" CssClass="modalPopup" Width="100%" Height="100%">
<uc3:CustomerForm runat="server" ID="CustomerForm1" ParentUpdatePanel="UpdatePanel1" ErrorDisplayControl="lblErrorMessage"/>
</asp:Panel>
当我点击主页面上的按钮后面的代码调用:
ModalPopupExtender2.Show();
这显示了我的控件,当我添加新客户时,数据库已更新,因此这方面的工作正常。我需要做的是增强代码,以便在添加客户并关闭用户控件时,主页上的客户下拉列表将加载更新的客户列表,并选择用户输入的客户。下拉列表是数据绑定所以我的问题是,我如何知道我的用户控件何时关闭,以便我可以计算出是否已添加新客户,然后重新数据化我的列表并选择正确的项目?使用asp.net和javascript不是我有很多技巧的领域,所以如果我使用了错误的术语,请原谅。
答案 0 :(得分:0)
我找到了解决问题的方法。在我的usercontrol中,在添加新客户后,我致电:
RaiseBubbleEvent(this, new CustomerArgs {OrganisationId = organisationId});
在调用页面的代码后面,我会听泡泡事件:
protected override bool OnBubbleEvent(object sender, EventArgs e)
{
if (sender is CustomerForm && e is CustomerArgs)
{
_organisationID = (e as CustomerArgs).OrganisationId.ToString();
DoOrganisationListDataBind();
return true;
}
return false;
}
这适用于我所追求的目标。不确定这是否是一种很好的方法,但它有效。