web-dev-qa-db-ja.com

コードビハインドからjavascript関数を呼び出す方法

Asp.netページでjavascriptを書きました。

Asp.netページ

<HTML> <HEAD>
     <script type="text/javascript">
      function Myfunction(){
          document.getElementId('MyText').value="hi";
      }
      </script>
</HEAD> <BODY>
<input type="text" id="MyText" runat="server" /> </BODY>

コードビハインドで

 Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
  Handles Me.Load
       If Session("My")= "Hi" Then
          I want to call "Myfunction" javascript function
       End If 
 End Sub

どのようにできるのか?

50
zanhtet

これは、コードビハインドから1つ以上のJavaスクリプトメソッドを呼び出す方法です。 Script Managerを使用すると、メソッドを順番に呼び出すことができます。以下の場所の敵の例を考えてみましょう。

ScriptManager.RegisterStartupScript(this, typeof(Page), "UpdateMsg", 
   "$(document).ready(function(){EnableControls();
   alert('Overrides successfully Updated.');DisableControls();});", true);

この最初のメソッドでは、EnableControls()が呼び出されます。次に、アラートが表示されます。次に、DisableControls()メソッドが呼び出されます。

40
Deepak Kothari

それを行う1つの方法は、ClientScriptManagerを使用することです。

Page.ClientScript.RegisterStartupScript(
    GetType(), 
    "MyKey", 
    "Myfunction();", 
    true);
69
Jacob

これを行うことができる非常に簡単な方法があります。これには、コードビハインドからラベルコントロールにJavaScriptコードを挿入することが含まれます。サンプルコードは次のとおりです。

<head runat="server"> 
    <title>Calling javascript function from code behind example</title> 
        <script type="text/javascript"> 
            function showDialogue() { 
                alert("this dialogue has been invoked through codebehind."); 
            } 
        </script> 
</head>

..........

lblJavaScript.Text = "<script type='text/javascript'>showDialogue();</script>";

完全なコードはこちらをご覧ください。 http://softmate-technologies.com/javascript-from-CodeBehind.htm (デッド)
インターネットアーカイブからのリンク: https://web.archive.org/web/20120608053720/http://softmate-technologies.com/javascript-from-CodeBehind.htm

13
evaaggy

実行の順序が重要ではなく、asp要素で起動するjavascriptとコードビハインドの両方が必要な場合は、次のようにします。

私の例から何を奪うことができますか:ASPコントロールをカバーするdivがあり、javascriptとcodebehindの両方を実行したいのです。 divのonClickメソッドとカレンダーのOnSelectionChangedイベントの両方がこの方法で発生します。

この例では、ASP Calendarコントロールを使用しており、javascriptと分離コードの両方からそれを制御しています。

フロントエンドコード:

        <div onclick="showHideModal();">
            <asp:Calendar 
                OnSelectionChanged="DatepickerDateChange" ID="DatepickerCalendar" runat="server" 
                BorderWidth="1px" DayNameFormat="Shortest" Font-Names="Verdana" 
                Font-Size="8pt" ShowGridLines="true" BackColor="#B8C9E1" BorderColor="#003E51" Width="100%"> 
                <OtherMonthDayStyle ForeColor="#6C5D34"> </OtherMonthDayStyle> 
                <DayHeaderStyle  ForeColor="black" BackColor="#D19000"> </DayHeaderStyle>
                <TitleStyle BackColor="#B8C9E1" ForeColor="Black"> </TitleStyle> 
                <DayStyle BackColor="White"> </DayStyle> 
                <SelectedDayStyle BackColor="#003E51" Font-Bold="True"> </SelectedDayStyle> 
            </asp:Calendar>
        </div>

分離コード:

        protected void DatepickerDateChange(object sender, EventArgs e)
        {
            if (toFromPicked.Value == "MainContent_fromDate")
            {
                fromDate.Text = DatepickerCalendar.SelectedDate.ToShortDateString();
            }
            else
            {
                toDate.Text = DatepickerCalendar.SelectedDate.ToShortDateString();
            }
        }
1