16

私は次のように1つのJavaScript関数を作成しました。

 function CalcTotalAmt() 
 {
    ----------
    -----------
 }

ドロップダウンリストが1つあります。

  <asp:DropDownList ID="ddl" runat="server"  AutoPostBack="true" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>

DropDownListのSelectedIndexChangedイベントで上記のJavaScript関数を呼び出す必要があります。私は以下のように試しました。

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
    ddl.Attributes.Add("onchange", "return CalcTotalAmt();");
}

しかし、JavaScript関数は実行されていません。DropDownList変更イベントでJavaScript関数を呼び出す方法は?

4

3 に答える 3

17

または、次のようにすることもできます。

<asp:DropDownList ID="ddl" runat="server"  AutoPostBack="true" onchange="javascript:CalcTotalAmt();" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>
于 2012-06-02T11:39:22.237 に答える
13

最初の方法:(テスト済み)

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

JavaScript関数:JS関数からtrueを返します

   function CalcTotalAmt() 
 {
//Your 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>

2番目の方法:(テスト済み)

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

JavaScript関数:JS関数からtrueを返します

function CalcTotalAmt() {
         //Your Code
     __doPostBack("ctl00$MainContent$ddl","ddlchange");
 }

.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>
于 2012-06-02T11:24:31.977 に答える
1

を使用しScriptManager.RegisterStartupScript();て、サーバーから任意の JavaScript イベント/クライアント イベントを呼び出すことができます。たとえば、javascript の を使用してメッセージを表示するには、次のalert();ようにします。

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);
}

あなたのために正確に言うと、これをしてください...

protected void ddl_SelectedIndexChanged(object sender, EventArgs e)
{
 ScriptManager.RegisterStartupScript(this, this.GetType(), "callJSFunction", "CalcTotalAmt();", true);
}
于 2012-09-11T05:13:00.823 に答える