将onclick事件添加到按钮会导致页面错误

时间:2012-07-12 13:11:59

标签: javascript asp.net html vb.net

下面是我的asp.net应用程序中按钮的html代码,它使用vb作为服务器端语言。该按钮在服务器端处理,代码也在下面列出。我的问题是当我添加一个onclick事件时(我想调用一个javascript函数,无论是在同一页面还是在父页面中,因为这个页面只显示在我们应用程序的iframe中,永远不会孤立)。

目前,这是按钮的html

<asp:button class="smalltextbutton" id="Button1" runat="server" Text="Save"></asp:button>

当更改为以下内容时,我在页面启动时出现错误,指出“编译器错误消息:BC30456:'refreshParentTree'不是'ASP.tasks_modifytask_aspx'的成员。 “

<asp:button class="smalltextbutton" id="Button1" OnClick="refreshParentTree()" runat="server" Text="Save"></asp:button>

现在javascript函数非常基本,在表单之外,这就是它的样子。

<script language="javascript">
 function refreshParentTree(){
        alert('refresh parent tree hit');
        }
</script>

在服务器端,这是我的代码,用于处理按钮单击(vb)

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'DEBUG: 
    If Trace.IsEnabled Then cGK_testSpot.Text += "<div style='border: solid thin orange;'>Button1_Click() STARTING<br>"
    'DEBUG: 
    If Trace.IsEnabled Then cGK_testSpot.Text += "<div style='border: solid thin green;'>printArrayList (delete ALL EXCEPT this list from P2_CustomFields_Detail): " + CustomFieldsLibrary.printArrayList(arlist_dynCompnts) + "</div>"

    If Page.IsValid Then
        CustomFieldsLibrary.deleteAllDynamicFieldsExceptThisList(lnCurrent, 13, -1, arlist_dynCompnts, (New SqlConnection((New ConnInfo).GetConnString)), True)
        UpdateDatabase()
        If Not Trace.IsEnabled Then Server.Transfer("viewTask.aspx?taskgrpid=" & lnCurrent & "&taskgrpcategory=13&ptaskgrpid=" & Request.QueryString("ptaskgrpid") & "&ptaskgrpcategory=" & Request.QueryString("ptaskgrpcategory") & "&refresh=true")
    Else
        populateDropDowns()
    End If

    If Trace.IsEnabled Then cGK_testSpot.Text += "<div style='border: solid thin green;'>printArrayList: " + CustomFieldsLibrary.printArrayList(arlist_dynCompnts) + "</div>"
    'DEBUG: 
    If Trace.IsEnabled Then cGK_testSpot.Text += "<br>Button1_Click() ENDED</div>"
End Sub

所以基本上,我正在寻找这里错误地做了什么,为什么页面给我错误,一旦这些解决了,我将需要onclick也在同一页面上调用javascript函数,然后将直接呼叫父母或父母。谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

Use OnClientClick代替OnClick

<asp:button>是服务器端元素,因此它有自己的特定于ASP.NET的服务器端属性,这些属性在服务器端进行处理。因此OnClick不是您认为的常规HTML元素。编译器正在服务器上查找该代码,但它不存在。

另一方面,

OnClientClick仅被视为字符串,不会被编译器评估。 (除了在输出中发出onclick HTML属性。)它假定将有客户端代码来处理它。

答案 1 :(得分:0)

尝试将OnClick更改为onclick(小写字母)。由于标记具有runat =“server”属性,因此它是服务器控件,然后OnClick将引用必须在Code Behind中定义的服务器端事件。