2011-06-02 30 views
4

好。我面臨的問題是我有我自己的自定義控件,我做了一個查詢,獲取記錄,並根據數據動態地添加html控件到頁面。動態Javascript在asp.net

現在有我這樣做是有文字對照的幫助下加入一些動態JavaScript

的問題。

<asp:Literal runat="server" ID="latEventToolTipJqueryScripts"></asp:Literal> 

這就像一個魅力

<script language="javascript" type="text/javascript"> 
// <![CDATA[ 
    Sys.Application.add_load(WireEvents_<%=this.ID%>); // fix wiring for .NET ajax updatepanel 
    $(WireEvents_<%=this.ID%>); // handle page load wiring 

    function WireEvents_<%=this.ID%>() { 
     <asp:Literal runat="server" ID="latEventToolTipJqueryScripts"></asp:Literal> 
    } 

// ]]> 
</script> 

我動態添加文字文本從後面的代碼。

但是,將控件放置到updatepanel時,回發不會更新腳本。

編輯:Sys.Application.add_load重新引用必要的功能與updatepanel很好。問題在於,需要代替文字的腳本在update面板中不會更新。

我已經嘗試了ClientScript.RegisterStartupScript,但它具有與文字控制技巧相同的效果。任何幫助?

---------------------------已解決(tnx to Pranay Rana)----------- -----------------------

擺脫了ascx方面的字面意思。以及Sys.Application.add_load

現在它只在後面的代碼中。扔掉我的東西是JQuery的東西。

this.strBuilderJS.Append("<script language='javascript' type='text/javascript'>" + 
           "$(WireEvents_" + this.ID + ");" + 
           "function WireEvents_" + this.ID + "(){"+ 
           " alert('stuff');"); 

this.strBuilderJS.Append(  "}</script>"); 

然後

ScriptManager.RegisterStartupScript(this, this.GetType(), "strBuilderJS", strBuilderJS.ToString(), false); 

回答

3

利用ScriptManager.RegisterStartupScript()註冊腳本...可以解決問題...

檢查這個解決您的問題:Add JavaScript programmatically using RegisterStartupScript during an Asynchronous postback

+0

其實這就是我在查看ClientScript.RegisterStartupScript時所看到的頁面,我也嘗試了您的建議ScriptManager.RegisterStartupScript()。它與我在文字控制方面的作用相同。它會在頁面末尾添加腳本,以便在標記之前。它不會做的是在updatepanel中使用控件時更新腳本 – robert 2011-06-02 06:55:38

+0

@robert - 當updatepanle更新頁面時,用於執行綁定腳本的ScriptManager.RegisterScript .... – 2011-06-02 06:58:12

3

我會建議採用不同的方法。爲任何語言創建動態JavaScript。我會創建一個對動態文件的引用。在這個例子中,我將使用.NET

  1. 創建Test.aspx的頁面,並添加這個腳本:

    <script type="text/javscript" src="js/foo.aspx"></script>

  2. 請用正確的內容類型確定你的頁面響應。因此,對於這種情況下我會在頁面加載代碼後面添加此爲您foo.aspx:

    Response.ContentType = "application/javascript";

  3. 在foo.aspx HTML視圖中添加JavaScript代碼。

    alert("<%=DateTime.Now%>");

  4. 瀏覽你的網頁Test.aspx文件,你會看到一個警報,當前日期

您應該能夠從這裏向前邁進。目標是將JavaScript文件從靜態頁面中分離出來。

快樂編碼。

0

如何更改ASP Button控件的文本上的定位標記點擊

我們有以下的ASP按鈕,我們想改變文本時,我們對錨標記點擊

<asp:Button ID="btn_Add" runat="server" CssClass="button2" onclick="btn_Add_Click"/> 

我們有以下兩個錨固標籤

<a href = "javascript:void(0)" class="toplink" onclick = "changeText1();">Add New</a> 

<a href = "javascript:void(0)" class="toplink" onclick = "changeText2();">Add New</a> 

現在我們添加下面的腳本標記代碼

<script type="text/javascript" language="javascript"> 
    function changeText1() { 
     document.getElementById("lbl_header").innerText = 'Add New Teacher'; 
     document.getElementById("btn_Add").value = 'Add'; 
    } 
    </script> 

    <script type="text/javascript" language="javascript"> 
    function changeText2() { 
     document.getElementById("lbl_header").innerText = 'Delete Teacher'; 
     document.getElementById("btn_Add").value = 'Delete'; 
    } 
    </script>