J'ai écrit une fonction JavaScript comme suit:
function CalcTotalAmt()
{
----------
-----------
}
J'ai un DropDownList,
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>
J'ai besoin d'appeler la fonction JavaScript ci-dessus dans l'événement SelectedIndexChanged de DropDownList. J'ai essayé comme ci-dessous;
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
ddl.Attributes.Add("onchange", "return CalcTotalAmt();");
}
Mais la fonction JavaScript ne s'exécute pas. Comment appeler la fonction JavaScript dans DropDownList Change Event?
Première méthode: (Testé)
Code dans .aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
ddl.SelectedIndexChanged += new EventHandler(ddl_SelectedIndexChanged);
if (!Page.IsPostBack)
{
ddl.Attributes.Add("onchange", "CalcTotalAmt();");
}
}
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
//Your Code
}
Fonction JavaScript: retourne vrai depuis votre fonction JS
function CalcTotalAmt()
{
//Your Code
}
Code .aspx:
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true">
<asp:ListItem Text="a" Value="a"></asp:ListItem>
<asp:ListItem Text="b" Value="b"></asp:ListItem>
</asp:DropDownList>
Deuxième méthode: (testé)
Code dans .aspx.cs:
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Params["__EVENTARGUMENT"] != null && Request.Params["__EVENTARGUMENT"].Equals("ddlchange"))
ddl_SelectedIndexChanged(sender, e);
if (!Page.IsPostBack)
{
ddl.Attributes.Add("onchange", "CalcTotalAmt();");
}
}
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
//Your Code
}
Fonction JavaScript: retourne vrai depuis votre fonction JS
function CalcTotalAmt() {
//Your Code
__doPostBack("ctl00$MainContent$ddl","ddlchange");
}
Code .aspx:
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true">
<asp:ListItem Text="a" Value="a"></asp:ListItem>
<asp:ListItem Text="b" Value="b"></asp:ListItem>
</asp:DropDownList>
Ou vous pouvez aussi le faire comme:
<asp:DropDownList ID="ddl" runat="server" AutoPostBack="true" onchange="javascript:CalcTotalAmt();" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>
Vous pouvez utiliser la fonction ScriptManager.RegisterStartupScript();
pour appeler n'importe quel événement javascript/événement client à partir du serveur. Par exemple, pour afficher un message à l'aide de la alert();
de javascript, vous pouvez procéder comme suit:
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
Response.write("<script>alert('This is my message');</script>");
//----or alternatively and to be more proper
ScriptManager.RegisterStartupScript(this, this.GetType(), "callJSFunction", "alert('This is my message')", true);
}
Pour être exact pour vous, faites ceci ...
protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
ScriptManager.RegisterStartupScript(this, this.GetType(), "callJSFunction", "CalcTotalAmt();", true);
}