0

以下は、vb をサーバー側言語として使用する asp.net アプリケーションのボタンの html コードです。ボタンはサーバー側で処理され、コードも以下にリストされています。私の問題は、onclickイベントを追加するときです(このページはアプリケーションのiframeにのみ表示され、スタンドアロンではないため、同じページまたは親でjavascript関数を呼び出したい)。

現在、これはボタンの 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 関数も呼び出す必要があります。親、または親から直接。ご協力ありがとうございました。

4

2 に答える 2

2

OnClientClickの代わりに使用OnClickしてください。

An<asp:button>はサーバー側の要素であるため、サーバー側で処理される独自のASP.NET固有のサーバー側属性があります。したがってOnClick、通常のHTML要素に関してはそうではないと思います。コンパイラはサーバー上でそのコードを探していますが、そこにはありません。

OnClientClick一方、は文字列として扱われるだけで、コンパイラによって評価されません。(出力でHTML属性を出力することを除いてonclick。)それを処理するクライアント側のコードがあることを前提としています。

于 2012-07-12T13:17:17.550 に答える
0

OnClick を onclick (小文字) に変更してみてください。タグには runat="server" 属性があるため、これはサーバー コントロールであり、OnClick はコード ビハインドで定義する必要があるサーバー側イベントを参照します。

于 2012-07-12T13:15:47.970 に答える