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

时间:2013-05-13 05:28:31

标签: c# asp.net updatepanel

我有一个页面,我使用2个用户控件。一个控件是预留控制,另一个是通道伙伴控制。在预订控制方面,我有一个下拉列表,其中包含所有渠道合作伙伴。当用户拥有新的渠道合作伙伴时,他会点击AddNewChannel链接并弹出渠道合作伙伴,然后用户将新渠道合作伙伴插入数据库。现在我的问题是,数据被插入数据库我希望下载预订要刷新,并应包含新的渠道合作伙伴。我试过这样:

UpdatePanel upnl = (UpdatePanel)Page.FindControl("UpdatePanel1");

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

我在更新面板中的预订控制下拉菜单。但它没有用。任何尝试提供帮助的人都将不胜感激。

2 个答案:

答案 0 :(得分:0)

Anser是使用模型弹出的卸载方法并从那里更新。感到失望,没有从这个社区得到任何答案.....

答案 1 :(得分:0)

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

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

渠道合作伙伴用户控制。

所以我要向Channel Partners用户控件添加一个名为NewChannelPartnerCreated的新事件。

public event EventHandler<EventArgs> NewChannelPartnerCreated;

同样对于渠道合作伙伴用户控件,我会在保存已成功完成后附加到保存按钮单击处理程序以引发事件。

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
}

预订用户控件

修改预订用户控件以公开刷新下拉列表的公共方法,并调用包装下拉列表的更新面板的更新方法

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事件。事件处理程序只需要调用由Reservation用户控件公开的 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