首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在数据库中插入新值后,需要刷新下拉列表

在数据库中插入新值后,需要刷新下拉列表
EN

Stack Overflow用户
提问于 2013-05-13 13:28:31
回答 2查看 692关注 0票数 1

我有一个页面,我正在使用2个用户控件。一个控制是预留控制,另一个是渠道伙伴控制。在预订控制上,我有一个包含所有渠道合作伙伴的下拉列表。当用户有新的渠道合作伙伴时,他单击AddNewChannel链接,渠道合作伙伴弹出,然后用户将新的渠道合作伙伴插入到数据库中。现在我的问题是,当数据被插入到数据库中时,我想要刷新预订下拉列表,并且应该包含新的渠道合作伙伴。我试过这样做:

代码语言:javascript
复制
UpdatePanel upnl = (UpdatePanel)Page.FindControl("UpdatePanel1");

if (upnl != null)
    upnl.Update();

我在更新面板中的预订控件上的下拉列表。但是它并没有起作用。任何试图帮助我们的人都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-15 17:20:29

假设:渠道合作伙伴用户控制包含用于添加新合作伙伴的弹出窗口。弹出窗口有一个保存按钮(ASP.Net服务器端控件),它有一个服务器端点击处理程序,它实际将数据提交到数据库。此外,您的用户控件还包括一个带有异步回发触发器的附加更新面板,因此当用户保存新伙伴时,窗体不会回发,而是生成一个异步回发

因此,我通常使用事件来允许用户控件相互通信。在这种情况下,您只需要引发一个事件来说明何时创建了新的渠道合作伙伴,并在此事件上触发您的更新面板。

渠道合作伙伴用户控制。

因此,我将向Channel Partners用户控件添加一个名为NewChannelPartnerCreated的新事件。

代码语言:javascript
复制
public event EventHandler<EventArgs> NewChannelPartnerCreated;

另外,对于Channel Partners用户控件,我将附加到Save按钮的click处理程序中,以便在成功完成保存后引发事件。

代码语言:javascript
复制
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方法

代码语言:javascript
复制
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方法,该方法由保留用户控件公开

代码语言:javascript
复制
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

票数 0
EN

Stack Overflow用户

发布于 2013-05-14 15:25:55

Anser是使用模型弹出和更新的卸载方法。对未能从这个社区得到任何答复感到失望……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16515388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档