强制UpdatePanel从母版页重新加载

时间:2019-07-12 21:45:50

标签: asp.net vb.net updatepanel master-pages

我的母版页及其SelectedIndexChanged事件中都有一个下拉菜单,我希望它重新加载内容页的数据。我将内容页面的内容包装在UpdatePanel中,以便可以在我的母版页后面的代码中完成此操作:

Protected Sub ddlMyDropdown_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddlMyDropdown.SelectedIndexChanged
    Session("NewVal") = ddlMyDropdown.SelectedValue
    upMyUpdatePanel.Update()
End Sub

然后在内容页面中,我使用下拉菜单设置的值并将其显示在屏幕上:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    lblMyLabel.Text = Session("NewVal")
End Sub

问题在于,当upMyUpdatePanel更新时,它落后了一步,这意味着它反映了此事件之前的一个ddlMyDropdown事件中SelectedIndexChanged的值。我认为这是因为内容页的Page_Load事件在母版页的SelectedIndexChanged事件之前触发。

从母版页的下拉列表中选择新值后,如何更新内容页的内容?

2 个答案:

答案 0 :(得分:1)

另一种方法是从内容页面执行所有操作。

您需要在内容页面上输入的是(C#):

// find the ddl on the master page.
DropDownList ddl = (DropDownList)Page.Master.FindControl("DropDownList1");
// set the label's text.
Label1.Text = ddl.SelectedValue;

您不必设置会话数据。

答案 1 :(得分:0)

如果我不需要SelectedIndexChanged事件在之前触发代码,则@wazz的答案将解决我的问题。

我解决了问题,方法是将内容页面的Page_Load代码移到Page_PreRender中,以便它在母版页面SelectedIndexChanged之后触发。可能不理想,但效果很好。

Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
    'Do stuff...
End Sub