簡體   English   中英

從下拉列表asp.net中調用javascript方法

[英]calling a javascript method from within a dropdown list asp.net

我有一個下拉列表,當選定的值是一個certin值時,我需要做一些事情,然后重定向到新選項卡中的新頁面

現在我想最好的方法是使用其中的任何一個response.wirte()

Response.Write(<script>);
Response.Write(window.open('url'));
Response.Write(</script>);

或Page.ClientScript.RegisterStartupScript()方法調用一個javascript方法,該方法將在不同的標簽中打開一個新頁面,如下所示

Page.ClientScript.RegisterStartupScript(GetType(),"GoToURL", "<script language=JavaScript>GoToURL(" + url + ")</script>");

和JavaScript看起來像

<script type="text/javascript">
                function GoToURL(url)
                {
                    window.open(url);
                }
            </script>

我已經嘗試了這兩種方法以及response.write方法,但都無法解析resposnse請求,並且當我使用Page.ClientScript.RegisterStartupScript時什么也沒有發生

任何人都可以看到我在此方面或任何其他可能的方式出了問題的地方

請注意,這兩種代碼的和平都在我的​​下拉列表的SelectedIndexChanged方法內被淘汰了

提前致謝

最后更新 ,我只是屈服了,最后用一個按鈕來做后面的代碼和Java腳本(不要喜歡那些onclientclick事件:p了),因為似乎沒有什么能使Java腳本從下拉菜單的onselected更改中運行。事件

謝謝你的所有建議:)

編輯:

根據您的評論,我認為這是您想要的解決方案。 您可以為每個下拉列表值創建一個案例,然后根據這些案例,在新標簽中將用戶重定向到其他url。

    protected void ddlAuthoritytype_SelectedIndexChanged(object sender, EventArgs e)
{
    var port = Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port.ToString();

    string ddl = ddlAuthoritytype.SelectedValue;
    switch (ddl)
    {
        case "AL":
            var script = string.Format("window.open('{0}://{1}{2}{3}')", Request.Url.Scheme, Request.Url.Host, port, ResolveUrl("~/alabama-state-tax-calculator.aspx"));
            ScriptManager.RegisterStartupScript(this, this.GetType(), "newWindow",script, true);
            break;
    }
}

您可以改用“隱藏字段”,在后面的代碼中,用URL設置“隱藏字段值”。

pageLoad() javascript函數中檢查隱藏字段的值,如果它不是空的,則使用window.open(hiddenFieldValue) ,例如:

<script type="text/javascript">
    function pageLoad()
    {
        // Use $('#' + '<%= hfURL.ClientID %>') if hidden field has runtat="server"
        if($('#' + '<%= hfURL.ClientID %>').val()) 
            window.open($('#' + '<%= hfURL.ClientID %>').val()); 
            // OR window.open($("hfURL").val(), '_blank');
    }
</script>

問題在於,在這兩種情況下,當頁面回發並返回到html時,它們都找不到您的JavaScript函數,即:GoToUrl(),因為它最初並未加載。 您可以調用window.open(url); C#按鈕單擊事件中的方法。 像這樣:

Page.ClientScript.RegisterStartupScript(GetType(),"GoToURL", "<script language=JavaScript>window.open(" + url + ");</script>");

我沒有嘗試過,但是我認為這應該起作用。

希望這會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM