简体   繁体   中英

call javascript from c#

I know this question is asked before, and I looked it up, and found this sulotion:

Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "test();", true);

so I put that in my c# method, and the following javascript code in my head.

<script type ="text/javascript">
    function test() {
        alert("succes");
    }
</script>

this is my html where i call the code behind method.

<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div id="ampwirecalc">
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" RenderMode="Inline">
    <ContentTemplate>
<asp:DropDownList ID="dropdownsize"  OnSelectedIndexChanged="wirecalc" onchange="runscalc()" AutoPostBack="true" runat="server">
<asp:ListItem Text="Select Wire Size" value="-1"/>
<asp:ListItem Text="1/0 gauge" Value="0" />
<asp:ListItem Text="4 gauge" Value="1" />
<asp:ListItem Text="8 gauge" Value="2" />
</asp:DropDownList>


<script type="text/javascript">
function runscalc()
{
    var totalRMS = document.getElementById('<%=tbx_anw3.ClientID%>').value;
    document.getElementById('<%=HiddenField1.ClientID%>').value = totalRMS;
    }
</script>

<!--These are the texts giving information on the options-->
<div class="textwirecalc">
<p class="selectedwire">Selected Wire:</p>
<p class="neededruns">Needed Runs:</p>
<p class="selectedsize">Selected size:</p>
</div>

<!--These are the labels that wil show the calculated info-->
<div class="labelwirecalc">
<asp:Label ID="wiretype" runat="server" Text="Wire type will show here"></asp:Label>
<asp:Label ID="wireruns" runat="server" Text="Needed runs will show here"></asp:Label>
<asp:Label ID="wiresize" runat="server" Text="Wire size will show here"></asp:Label>
</div>
</ContentTemplate>
</asp:UpdatePanel>

does anyone know what I'm doing wrong, and what I should do instead.

thanks in advance.

Try this

Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "test();", false);

Reference

last parameter true/false indicate- whether to add script tags.

you can give the javascript like below, no need to write javascript function

Page.ClientScript.RegisterStartupScript(this.GetType(), "click","alert('succes');", true);

UPDATE

ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(),
             "click", "alert('succes');", true);

http://msdn.microsoft.com/en-us/library/asz8zsxy.aspx所说,第三个参数必须用脚本标记括起来。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function test() {
            alert("succes");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <div id="ampwirecalc">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional" RenderMode="Inline">
            <ContentTemplate>
                <asp:DropDownList ID="dropdownsize" onchange="runscalc()" AutoPostBack="true" runat="server" OnSelectedIndexChanged="dropdownsize_SelectedIndexChanged">
                    <asp:ListItem Text="Select Wire Size" Value="-1" />
                    <asp:ListItem Text="1/0 gauge" Value="0" />
                    <asp:ListItem Text="4 gauge" Value="1" />
                    <asp:ListItem Text="8 gauge" Value="2" />
                </asp:DropDownList>
                <script type="text/javascript">

                </script>
                <!--These are the texts giving information on the options-->
                <div class="textwirecalc">
                    <p class="selectedwire">
                        Selected Wire:</p>
                    <p class="neededruns">
                        Needed Runs:</p>
                    <p class="selectedsize">
                        Selected size:</p>
                </div>
                <!--These are the labels that wil show the calculated info-->
                <div class="labelwirecalc">
                    <asp:Label ID="wiretype" runat="server" Text="Wire type will show here"></asp:Label>
                    <asp:Label ID="wireruns" runat="server" Text="Needed runs will show here"></asp:Label>
                    <asp:Label ID="wiresize" runat="server" Text="Wire size will show here"></asp:Label>
                </div>
            </ContentTemplate>
        </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>

And code behind,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication2
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
           // Page.ClientScript.RegisterStartupScript(this.GetType(), "click", "test();", true);
        }

        protected void dropdownsize_SelectedIndexChanged(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(UpdatePanel1, UpdatePanel1.GetType(),
                  "click", "test();", true);
        }
    }
}

Try this code.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM