开发者

dynamic Javascript in asp.net

well. The problem i'm facing is i have my own custom control and i do a query , get records and dynamically add html controls to the page based on the data.

Now there's the problem of adding some dynamic javascript

I do this with the help of literal controls.

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

This works like a charm

<script language="javascript" type="text/javascript">
// <![CDATA[
    Sys.Application.add_load(WireEvents_<%=this.ID%>); // fix wiring for .NET ajax updatepanel
    $(WireEvents_<%=this.ID%>); // hand开发者_运维技巧le page load wiring

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

// ]]>
</script>

I add the literal text dynamically from code behind.

However, when placing the control in an updatepanel, the postbacks don't update the script.

EDIT: The Sys.Application.add_load rewires the necessary functions just fine with the updatepanel. The problem is that the script that needs to be in place of the literal, doesn't update when in an updatepanel.

I've tried the ClientScript.RegisterStartupScript but it has the same effect as with the literal control trick. Any help?

---------------------------SOLVED (tnx to Pranay Rana)----------------------------------

Got rid of the literal in the ascx side. as well as the Sys.Application.add_load

now it's only in the code behind. The thing that was throwing me off was the JQuery thing.

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

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

and then

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


Make use of ScriptManager.RegisterStartupScript() to register your script...may resolve problem ...

Check this resolve your problem : Add JavaScript programmatically using RegisterStartupScript during an Asynchronous postback


I would recommend on a different approach. To create a dynamic javascript for any language. I would create a reference to a dynamic file. For this example I will use .NET

  1. Create a test.aspx page and add this script:

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

  2. Make sure your page response with the right content type. So for this instance I would add this on page load code behind for your foo.aspx:

    Response.ContentType = "application/javascript";

  3. On the foo.aspx html view add your javascript code.

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

  4. Browse your test.aspx page and you should see an alert with the current date

You should be able to move forward from here. The goal is to separate the javascript file from the static page.

Happy Coding.


How to change text of ASP Button control on anchor tag click

We have an ASP Button below and we want to change text when WE click on anchor tag

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

We have following two anchor tags

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

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

Now we add following code in script tag

<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>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜