0

我创建了一个用户控件(.ascx),用于我的 asp.net 网站(不是 mvc)。该控件有几个文本框,允许用户输入新客户。它有两个按钮,一个用于添加客户,一个用于取消控制。我使用“ModalPopupExtender”调用显示控件,代码如下所示:

这是在更新面板中:

<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 不是我擅长的领域,所以如果我使用了错误的术语,请原谅。

4

1 回答 1

0

我找到了解决我的问题的方法。在我的用户控件中,添加新客户后,我调用:

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;
}

这对我所追求的效果很好。不确定这是否是一种好方法,但它确实有效。

于 2013-09-23T10:42:10.403 回答