Javascript 部分回发后,组合框启用状态重置 出身背景
我有一个搜索功能,允许最终用户在数据库中搜索项目。此搜索功能有一个文本框、两个组合框和一个按钮 当选择一个组合框项目时,另一个项目的值将更改,并将其设置为禁用。这是由Javascript和works完成的 所有控件都在updatepanel中 问题 updatepanel进行的回调完成后,将重置已禁用的组合框,并将其呈现为已启用 我猜 Javascript所做的更改不会保存到viewstate,并在初始请求中发回 有人能解释一下这个问题吗 密码 ASPJavascript 部分回发后,组合框启用状态重置 出身背景,javascript,asp.net,callback,updatepanel,viewstate,Javascript,Asp.net,Callback,Updatepanel,Viewstate,我有一个搜索功能,允许最终用户在数据库中搜索项目。此搜索功能有一个文本框、两个组合框和一个按钮 当选择一个组合框项目时,另一个项目的值将更改,并将其设置为禁用。这是由Javascript和works完成的 所有控件都在updatepanel中 问题 updatepanel进行的回调完成后,将重置已禁用的组合框,并将其呈现为已启用 我猜 Javascript所做的更改不会保存到viewstate,并在初始请求中发回 有人能解释一下这个问题吗 密码 ASP 这是WebForms中的常见问题。是的,你
这是WebForms中的常见问题。是的,你的猜测是对的。启用状态未保存在ViewState中 最好的方法是使用pageLoad功能:
<script>
///<summary>
/// This will fire on initial page load,
/// and all subsequent partial page updates made
/// by any update panel on the page
///</summary>
function pageLoad(){ alert('page loaded!') }
</script>
是的,我也有这个想法,通过在JS window.onload事件中再次禁用它。然而,由于更新面板的原因,它似乎没有在回调时启动。这就是你的意思吗?.window.onload函数与pageLoad函数不同。如果在JavaScript中定义一个pageLoad函数,它也会在每个部分回发事件中触发。好的,我现在正在研究这个问题。谢谢。请注意,该函数必须命名为“pageLoad”,每页只允许使用一个pageLoad函数。默认情况下,ViewState只保存控件的.text和.value字段,而不保存“enabled”等属性。此外,在客户端设置样式值不会更新ViewState。如果要将样式存储在ViewState中,则必须在服务器端设置样式。
function ChangeSearchCriteriaItem(s, e) {
debugger;
var cmbLocationCriteria = ASPxClientControl.GetControlCollection().GetByName("CbSearchLocationCriteria")
var selecteditem = cmbLocationCriteria.GetSelectedItem();
var cmbSearchCriteria = ASPxClientControl.GetControlCollection().GetByName("CbSearchCriteria");
if (selecteditem.text == "Comms Log") {
cmbSearchCriteria.SetValue("JobId");
cmbSearchCriteria.SetEnabled(false);
}
else {
cmbSearchCriteria.SetEnabled(true);
}
}
<script>
///<summary>
/// This will fire on initial page load,
/// and all subsequent partial page updates made
/// by any update panel on the page
///</summary>
function pageLoad(){ alert('page loaded!') }
</script>
ClientScriptManager.RegisterStartupScript(
typeof(page1),
"CssFix",
"javascriptFunctionName()",
true);