【发布时间】:2015-07-17 17:10:44
【问题描述】:
我有 2 个CascadingDropdownList、Application 和 Role。当应用程序更改时,角色被填充。
当 Application 或 Role 发生变化时,我使用 User List 对 UpdatePanel 进行部分渲染。
问题在于,当Application 更改POST 中发送的Role 的值以呈现UpdatePanel 时,是旧的Role填充角色之前的值,其中新的强调文本选择的应用程序的角色列表。
所以,我正在尝试的解决方案是在填充 Role 之后进行部分渲染。我从UpdatePanel 中删除Application 触发器,并使用Role CascadeDropDownList 中的populated 事件手动启动回发。
这样,当 Application 改变时,Role 被填充并且(感谢事件)UpdatePanel 被更新。当 Role 更改 UpdatePanel 中的基本触发器时,会进行更新。
代码背后:
ToolkitScriptManager.RegisterStartupScript(Me, Me.GetType,"wireEvents","Sys.Application.add_load(addPopulatedEvent);", True)
HTML:
<script>
function updatePanel() { __doPostBack('<%=UpdatePanel1.ClientID %>', null); }
function addPopulatedEvent(sender, args) {if (!args.get_isPartialLoad()) { $find('<%=cmbRoles_CascadingDropDown.ClientID %>').add_populated(updatePanel); } }
</script>
还有一个问题出现了。我可以在萤火虫网络中看到部分渲染POST 是如何同时启动的,有时甚至更早于填充角色POST。并且仍然可以在部分渲染POST 中看到 Role 的旧“预填充”值。简而言之:CascadingDropdownList populated event 在填充 CascadingDropdownList 后不会上升。这很奇怪,因为事件动词是过去的形式,而且populating event 也存在。所以一切都告诉我populated event 应该在角色被新数据填充后上升。但不是。
2 个问题:
- 我对 CascadingDropDownList 事件做错了吗?
- 如果我的解决方案永远无法正常工作,您能否指出另一个可行的解决方案?
【问题讨论】:
标签: asp.net .net-3.5 asp.net-ajax ajaxcontroltoolkit