我正在研究一个旧的ASPX项目,其中有VB的代码,并在两个.ASPX站点上使用的UserControl。
在该控件中,在代码后面是一个称为registerscript的函数,该函数可创建JS函数,并且您猜对了,请记录此功能。然后在单击弹出窗口中单击无线电按钮时,该函数被调用。
下面。我的问题是在一个站点上该功能正常工作,单击按钮,并且文本框显示/不显示。在另一个站点上,单击无线电按钮无济于事,浏览器控制台显示setSearchfield,js函数,未定义。
在两个.aspx文件中,USERCONTROL的定义完全相同,在底部定义的顶部注册。在这方面实际上没有区别。我不知道什么是错误。
sub registerscript,创建函数:
Private Sub RegisterScript()
Dim csm As ClientScriptManager = Page.ClientScript
Dim cstype = Me.GetType()
Dim csname = "SetSearchField"
If Not csm.IsClientScriptBlockRegistered(cstype, csname) Then
Dim script As String = ""
script &= "<script type='text/javascript'>"
script &= "function SetSearchField(selTextBoxId) {"
script &= "var itTextbox;"
script &= "itTextbox = document.getElementById('" & Me.Panel_Amount.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringBelegNr.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringFirm.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringOtherAccount.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "itTextbox = document.getElementById('" & Me.TextBox_SearchStringUsage.ClientID & "');"
script &= "itTextbox.style.display = 'none';"
script &= "var selElem = document.getElementById(selTextBoxId);"
script &= "selElem.style.display = 'block';"
script &= "selElem.focus();"
'script &= "if (selTextBoxId=='" & Me.TextBox_SearchStringAmountFrom.ClientID & "') {"
'script &= "document.getElementById('" & Me.TextBox_SearchStringAmountTo.ClientID & "').style.display = 'block';"
'script &= "}"
script &= "}"
script &= "</script>"
csm.RegisterClientScriptBlock(cstype, csname, script, False)
End If
End Sub
page_load,在registerscript被调用并添加到radiobuttons:
If Not Me.IsPostBack Then
Me.RegisterScript()
Me.RadioButton_Amount.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.Panel_Amount.ClientID & "');")
Me.RadioButton_BelegNr.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringBelegNr.ClientID & "');")
Me.RadioButton_Firm.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringFirm.ClientID & "');")
Me.RadioButton_OtherAccount.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringOtherAccount.ClientID & "');")
Me.RadioButton_Usage.Attributes.Add("onClick", "javascript:SetSearchField('" & Me.TextBox_SearchStringUsage.ClientID & "');")
在工作的ASPX网站上的USERCONTROL的注册和定义:
<%@ Register Src="../UserControls/UCSearch.ascx" TagName="UCSearch" TagPrefix="uc4" %>
<uc4:UCSearch ID="UCSearch_Sent" runat="server" Title="Gesendete Auftträge suchen"
EnableSearchSuborders="true" EnableSearchBelegNr="true" EnableSearchPeriode="false" />
在无法正常工作的网站上注册和定义:
<%@ Register Src="../UserControls/UCSearch.ascx" TagName="UCSearch" TagPrefix="uc3" %>
我一直在彻底搜索,但还没有找到适合我在一个网站上工作的案例,但没有在另一个网站上工作的任何案例。
我找到了答案。
生成的JavaScript由ISPostback的IF Else语句包围。由于一个呼叫者是一个imageButton,而另一个是正常按钮,因此导致另一个未定义和注册在其中一个站点上的函数。更改了按钮类型,它就像魅力一样工作。