我有一个页面,我正在使用2个用户控件。一个控制是预留控制,另一个是渠道伙伴控制。在预订控制上,我有一个包含所有渠道合作伙伴的下拉列表。当用户有新的渠道合作伙伴时,他单击AddNewChannel链接,渠道合作伙伴弹出,然后用户将新的渠道合作伙伴插入到数据库中。现在我的问题是,当数据被插入到数据库中时,我想要刷新预订下拉列表,并且应该包含新的渠道合作伙伴。我试过这样做:
UpdatePanel upnl = (UpdatePanel)Page.FindControl("UpdatePanel1");
if (upnl != null)
upnl.Update();我在更新面板中的预订控件上的下拉列表。但是它并没有起作用。任何试图帮助我们的人都将不胜感激。
发布于 2013-05-15 17:20:29
假设:渠道合作伙伴用户控制包含用于添加新合作伙伴的弹出窗口。弹出窗口有一个保存按钮(ASP.Net服务器端控件),它有一个服务器端点击处理程序,它实际将数据提交到数据库。此外,您的用户控件还包括一个带有异步回发触发器的附加更新面板,因此当用户保存新伙伴时,窗体不会回发,而是生成一个异步回发
因此,我通常使用事件来允许用户控件相互通信。在这种情况下,您只需要引发一个事件来说明何时创建了新的渠道合作伙伴,并在此事件上触发您的更新面板。
渠道合作伙伴用户控制。
因此,我将向Channel Partners用户控件添加一个名为NewChannelPartnerCreated的新事件。
public event EventHandler<EventArgs> NewChannelPartnerCreated;另外,对于Channel Partners用户控件,我将附加到Save按钮的click处理程序中,以便在成功完成保存后引发事件。
protected void btnSave_Click(object sender, EventArgs e)
{
// code that commits new partner to the database
if (errors == false)
NewChannelPartnerCreated(this, null);
else
// show errors
}预留用户控制
修改预留用户控件以公开一个公共方法来刷新下拉列表,并调用包装下拉列表的更新面板的update方法
Public void RefreshChannelPartnersList()
{
ChannelPartnersListUpdatePanel.Update();
// this databind code might not be needed if you have already have it in the PreRender (not PageLoad)
ddlChannelPartners.DataSource = YouMethodToGetChannelPartnersFromDatabase();
ddlChannelPartners.DataBind();
}用户控件容器页
最后,在承载这两个用户控件的页面后面的代码中,我将进行以下更改以完成图片。
在页面加载中,您可能希望侦听由Channel Partners用户控件引发的NewChannelPartnerCreated事件。事件处理程序只需调用refresh方法,该方法由保留用户控件公开
protected void Page_Load(object sender, EventArgs e)
{
NewChannelPartnerCtrl.NewChannelPartnerCreated += new EventHandler<EventArgs>(NewChannelPartnerCtrl_NewChannelPartnerCreated);
}
void NewChannelPartnerCtrl_NewChannelPartnerCreated(object sender, EventArgs e)
{
ReservationsCtrl.UpdateChannelPartnersList();
}可下载示例
尝试此http://sdrv.ms/18138yH
发布于 2013-05-14 15:25:55
Anser是使用模型弹出和更新的卸载方法。对未能从这个社区得到任何答复感到失望……
https://stackoverflow.com/questions/16515388
复制相似问题