2012-07-12 33 views
0

下面是我的asp.net應用程序中使用vb作爲其服務器端語言的按鈕的html代碼。該按鈕在服務器端處理,其中的代碼也在下面列出。我的問題是當我添加一個onclick事件時(我想調用一個javascript函數,無論是在同一頁面還是在父頁面中,因爲此頁面僅在我們的應用程序中的iframe中顯示,絕不孤單)。將onclick事件添加到按鈕導致頁面中的錯誤

目前,這是該按鈕

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

的HTML時變更爲下述下面,我得到的網頁時推出,指出「編譯器錯誤消息的錯誤: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

Use OnClientClick而不是OnClick

一種<asp:button>是一個服務器端元件,所以它具有被處理,那麼,服務器端其自身特定的ASP.NET的服務器端屬性。所以OnClick是不是你認爲它是在常規的HTML元素方面。編譯器正在服務器上查找該代碼,但它不在那裏。另一方面,

OnClientClick僅作爲字符串對待,不由編譯器評估。 (除了在輸出中發出onclickHTML屬性。)它假定將有客戶端代碼來處理它。

+0

謝謝。這工作。在幾分鐘內,當它允許我接受答案時,我將確保。 – njj56 2012-07-12 13:22:53

0

嘗試將OnClick更改爲onclick(小寫字母)。由於標籤具有runat =「server」屬性,因此它是一個服務器控件,並且OnClick將引用必須在代碼隱藏中定義的服務器端事件。

+0

小寫或大寫沒有關係,onclientclick解決了這個問題,因爲大衛回答,但感謝您的幫助和時間。 – njj56 2012-07-12 13:25:30