Вопрос по asp.net, drop-down-menu, javascript, visual-studio-2010 – Вызовите функцию JavaScript для события DropDownList SelectedIndexChanged:

14

Я написал одну функцию JavaScript следующим образом:

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

У меня есть один DropDownList,

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

Мне нужно вызвать вышеупомянутую функцию JavaScript в событии DropDownList SelectedIndexChanged. Я пытался, как показано ниже;

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

Но функция JavaScript не выполняется. Как вызвать функцию JavaScript в Event Change DropDownList?

Я понимаю, что это старый вопрос, но вы уверены, что хотите вызвать обратную передачу здесь? Если весь ваш код на стороне сервера вызывает код на стороне клиента, то почему бы просто не оставить сервер и запустить его непосредственно на стороне клиента? Tony L.

Ваш Ответ

3   ответа
1

Вы можете использоватьScriptManager.RegisterStartupScript(); чтобы вызвать любое ваше событие JavaScript / клиентское событие с сервера. Например, чтобы отобразить сообщение, используя javascriptalert();, вы можете сделать это:

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

Или вы можете сделать это так же:

<asp:DropDownList ID="ddl" runat="server"  AutoPostBack="true" onchange="javascript:CalcTotalAmt();" OnSelectedIndexChanged="ddl_SelectedIndexChanged"></asp:DropDownList>
и если вы хотите запустить это событие во время выпадающего события изменения на стороне сервера, попробуйте зарегистрировать свой сценарий с помощью метода Page.RegisterStartUpScript.
13

First Method: (Tested)

Код в .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: верните true из вашей функции JS

   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>

Second Method: (Tested)

Код в .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: верните true из вашей функции JS

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>
@thevan посмотрите мой обновленный ответ.
функция Javascript выполняется .. Но я написал некоторую кодировку в событии selectedindexchange. Но это событие не стреляет .. как решить эту проблему? thevan
@thevan Я обновил свой ответ
Но когда я щелкаю какое-то событие, сначала срабатывает событие selectedIndexChanged, а затем соответствующее событие. Я не знаю, почему это происходит так? thevan
Но все же это не стрельба. thevan

Похожие вопросы