我已经到处找了,但还没有找到解决方案。希望你能帮忙:
我正在维护一个用VB编写的网站。. NET,在Framework 2.0下运行。
在我的一个页面中,我在UpdatePanel中有一个下拉控件:
<asp:UpdatePanel ID="pnlDropDown" runat="server" UpdateMode="Conditional" ChildrenAsTriggers="true">
<ContentTemplate>
<asp:DropDownList ID="ddlTest" runat="server" Width="400"
OnSelectedIndexChanged="ddlTest_SelectedIndexChanged" AutoPostBack="true">
<asp:ListItem Text="--- Please Select ---" Selected="True"></asp:ListItem>
<asp:ListItem Text="111"></asp:ListItem>
<asp:ListItem Text="222"></asp:ListItem>
<asp:ListItem Text="333"></asp:ListItem>
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
在这个控件的处理程序中,我调用了ScriptManager。RegisterStartupScript:
Protected Sub ddlTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs)
ScriptManager.RegisterStartupScript(Me, GetType(Page), "Test", "alert('Test'); ", True)
End Sub
现在我的问题是:当我从下拉菜单中选择一个值时,"RegisterStartupScript"方法将不起作用,但只有当项目在IIS 6和框架2.0下运行时才会发生。-如果我改变它在IIS 7下运行,它工作得很好。-如果我改变它在框架4.0下运行,它工作完美。-如果我删除UpdatePanel部分,它的工作。
但是如果我不改变任何东西,它就不会做任何事情。
任何解决方案之前,我改变我的整个代码与jquery和ajax工作?:)
谢谢,
Orit .
这是我发现的解决方案,以避免使用RegisterStartupScript。它很简单,效果很好:
-
我在UpdatePanel中添加了一个名为"hdnTest"的隐藏字段:
<asp:UpdatePanel ID="pnlDropDown" runat="server" UpdateMode="Conditional"> <ContentTemplate> <asp:HiddenField ID="hdnTest" runat="server" /> <asp:DropDownList ID="ddlTest" runat="server" Width="400" OnSelectedIndexChanged="ddlTest_SelectedIndexChanged" AutoPostBack="true"> <asp:ListItem Text="--- Please Select ---" Selected="True"></asp:ListItem> <asp:ListItem Text="111"></asp:ListItem> <asp:ListItem Text="222"></asp:ListItem> <asp:ListItem Text="333"></asp:ListItem> </asp:DropDownList> </ContentTemplate>
-
在服务器端,我在控件的处理程序中向隐藏字段插入一个值:
Protected Sub ddlTest_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) If x Then hdnTest.Value = "true" Else hdnTest.Value = "false" End If pnlDropDown.Update() End Sub
-
在客户端,我添加了一个pageLoad()函数,该函数获取隐藏字段的值并根据它进行操作:
function pageLoad(){ if ($("#hdnTest").val() == "true") alert('true'); else alert('false'); }
非常好。
Orit .