我的母版页及其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
事件之前触发。
从母版页的下拉列表中选择新值后,如何更新内容页的内容?
答案 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