• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 964
  • Last Modified:

How to register a javascript function when i am using Ajax update panel?

hi all,
i need to do the following:
1. when every time there is an error message that's need to be displayed on the web page, make the message flashing for a few seconds. i am using a javascript function to achieve it.
2. i am using ajax update panel to control the postback. but i found the javascript function won't work if i am using this update panel. i googled on internet and found i need to register the javascript function, but i don't know where to do this registration and how to do it. can anyone help me to solve this problem?

thanks a lot
viola
<head runat="server">
    <script src="gen_lib.js" type="text/javascript"></script> //call this javascript file
</head>
<body onload="Init()"> //call this function to display Messages on the form
<form id="form1" runat="server">
    <ajaxToolkit:ToolkitScriptManager runat="server" ID="ScriptManager1" ScriptMode=Release />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
    <ContentTemplate>
    <asp:Label ID="status_label" runat="server" CssClass="note_item"></asp:Label>  //the message displayed in 'status_label' won't flash at all
 
<br/>
    <asp:Button ID="btnSave" runat="server" Text="Save"   OnClick="btnSave_Click" />
</ContentTemplate>
   
 
    </asp:UpdatePanel>
    </form>
</body>
 
--------------------------------
protected void btnSave_Click(object sender, EventArgs e)
    {
        SetStatus("My Details saved.");
    }
 
private void SetStatus(string msg)
    {
      status_label.Text="<input type=\"hidden\" id=\"flash_on\" value=\"true\">"+msg;
      
    }
 
--------------------------------
in my gen_lib.js file:
function Init()
{
  var status, exec_elem, ro_elems, ro_elem, objs, i, menu_id;
 
  //alert("Init...");
  status=document.all.status_label;
  if (status!=null && document.all.flash_on!=null)
  {
    if (status!=null && status.innerText!="" && document.all.flash_on.value=="true")
    {
      Init_Flash("#ffffff", "#00dd00", status);
    }
    if (status!=null && status.innerText!="" && document.all.flash_on.value=="error")
    {
      Init_Flash("#ffffff", "#ff0000", status);
    }
    if (status!=null && status.innerText!="" && document.all.flash_on.value=="warning")
    {
      Init_Flash("#ffffff", "#999900", status);
    }
    document.all.flash_on.value="false";
  }
    //do some other flash job......
}

Open in new window

0
viola123
Asked:
viola123
1 Solution
 
Gyanendra SinghArchitectCommented:
Just try this...

1. Give reference to the js file (if you are using it) from scriptmanager as

    <asp:ScriptManager ID="scpMgr" runat="server">
                             <Scripts>
                                  <asp:ScriptReference Path="js/MyScriptfile.js" />
                            </Scripts>
  </asp:ScriptManager>

2. And to call it from your code behind


                     ScriptManager.RegisterClientScriptBlock(Me, GetType(Page), "OpenWindow", "fnOpenWindow('myMsg');", True)
 

This is to call javascript function from code behind.

also refer this link for details
http://msdn.microsoft.com/en-us/magazine/cc163354.aspx
0
 
viola123Author Commented:
hi,
it works great!!!!
what i am doing are:
1. reference the javascript file in ScriptManager
2. register the founction in page_load event

thanks heaps
<head runat="server">
    <link href="../../../templates/styles.css" type="text/css" rel="stylesheet" />
</head>
<body onload="Init()" >
    <form id="form1" runat="server">
//reference it in ScriptManager
    <ajaxToolkit:ToolkitScriptManager runat="server" ID="ScriptManager1" ScriptMode=Release>
    <Scripts>
          <asp:ScriptReference Path="../../../templates/gen_lib.js" />
    </Scripts>
    </ajaxToolkit:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Always">
    <ContentTemplate>
    <asp:Label ID="status_label" runat="server" CssClass="note_item"></asp:Label>  //the message displayed in 'status_label' won't flash at all
 
<br/>
    <asp:Button ID="btnSave" runat="server" Text="Save"   OnClick="btnSave_Click" />
</ContentTemplate>
   
 
    </asp:UpdatePanel>
    </form>
</body>
-------------------------------------------
protected void Page_Load(object sender, EventArgs e)
    {
       //register it in page_load event
       ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "Init", "Init();", true);
    }

Open in new window

0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now