web-dev-qa-db-fra.com

Comment appeler une fonction javascript depuis code-behind

J'ai écrit un javascript avec une page asp.net.

Dans la page 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>

En code-behind

 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

Comment puis-je faire?

50
zanhtet

Ceci est un moyen d'appeler une ou plusieurs Java de script à partir du code précédent. En utilisant Script Manager, nous pouvons appeler les méthodes en séquence. Considérons l'exemple ci-dessous.

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

Dans cette première méthode, EnableControls () est appelé. Ensuite, l'alerte sera affichée. Ensuite, la méthode DisableControls () sera appelée.

40
Deepak Kothari

Une façon de le faire est d'utiliser le ClientScriptManager:

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

Il existe un moyen très simple de le faire. Cela consiste à injecter un code javascript à un contrôle d'étiquette à partir du code situé derrière. voici un exemple de code:

<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>";

Découvrez le code complet ici: http://softmate-technologies.com/javascript-from-CodeBehind.htm (mort)
Lien depuis Internet Archive: https://web.archive.org/web/20120608053720/http://softmate-technologies.com/javascript-from-CodeBehind.htm

13
evaaggy

Si l'ordre d'exécution n'est pas important et que vous avez besoin de javascript ET de codebehind pour être virés sur un élément asp, voici ce que vous pouvez faire.

Ce que vous pouvez retenir de mon exemple: j'ai une div couvrant le contrôle ASP que je veux exécuter à la fois sur javascript et codebehind. La méthode onClick de la div ET l'événement OnSelectionChanged du calendrier sont tous deux déclenchés. par ici.

Dans cet exemple, j'utilise un ASP contrôle du calendrier) et le contrôle depuis javascript et codebehind:

Code frontal:

        <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>

Codebhind:

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