javascript in user control.

  • Thread starter Thread starter archana
  • Start date Start date
A

archana

Hi all,

i am having one user control. what i want is to add javascript which
will gets called on button click of user control.

but user control is not working if i add javascript in user control..
but if i add javascript in page in which i am adding user control then
that javascript is executed properly.

i tested by displaying alert message in javascript. can anyone tell
me how will i add javascript in user control.

and one more thing controls present in user control, can't be access
directly in javascript. i checked viewsource of page what i found is
for controls of user control 'ctl' get prefixed. can nyone tell me
reason behind this?

any how will i get this id of controls of user control?

please help me asap.

thanks in advance
 
Hi all,

i am having one user control.  what i want is to add javascript which
will gets called on button click of user control.

but user control is not working if i add javascript in user control..
but if i add javascript in page in which i am adding user control then
that javascript is executed properly.

i tested by displaying alert message in javascript.  can anyone tell
me how will i add javascript in user control.

and one more thing controls present in user control, can't be access
directly in javascript.  i checked viewsource of page what i found is
for controls of user control 'ctl' get prefixed.  can nyone tell me
reason behind this?

any how will i get this id of controls of user control?

please help me asap.

thanks in advance

Try inserting the script using the Page.ClientScript property to
create a ClientScriptManager class to insert the script.

The ClientID property of web server controls is constructed to
guarantee a unique id within the context of the rendered page. The
control's ID property is not used as it is because scoping rules allow
identifiers to be re-used within code and within templates inside
databound controls.
 
Try inserting the script using the Page.ClientScript property to
create a ClientScriptManager class to insert the script.

The ClientID property of web server controls is constructed to
guarantee a unique id within the context of the rendered page. The
control's ID property is not used as it is because scoping rules allow
identifiers to be re-used within code and within templates inside
databound controls.- Hide quoted text -

- Show quoted text -

Thanks a lot for reply.

how will i access controls of user cotrol in parent page?

please help me asap.
 
Hi Archana,

I'm not sure if you would like to access the controls in your user
control in codebehind or in Javascript. The below sample does both. In
both cases, the trick is to use FindControl on your user control.
Please post back if this doesn't answer your question.

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="JSInUserControlTest._Default"
%>
<%@ Register Src="~/WebUserControl1.ascx" TagName="UserCtrl"
TagPrefix="my" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript">
function ChangeText() {
var theLabel = document.getElementById('<%=
myUserCtrl.FindControl("theLabel").ClientID %>');
theLabel.innerText = "Changed By JS";
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<my:UserCtrl ID="myUserCtrl" runat="server" />
<asp:Button ID="theJsButton" Text="Js Button"
OnClientClick="ChangeText();return false" runat="server" />
<asp:Button ID="theAspButton" Text="ASP Button"
OnClick="theAspButton_Click" runat="server" />
</div>
</form>
</body>
</html>

Default.aspx.cs:

using System;
using System.Web.UI.WebControls;

namespace JSInUserControlTest
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}
protected void theAspButton_Click(object sender, EventArgs e)
{
Label lbl = (Label)myUserCtrl.FindControl("theLabel");
lbl.Text = "Changed in codebehind";
}

}
}

WebUserControl1.ascs:

<%@ Control Language="C#" AutoEventWireup="true"
CodeBehind="WebUserControl1.ascx.cs"
Inherits="JSInUserControlTest.WebUserControl1" %>
<asp:Label ID="theLabel" Text="Some text here" runat="server" />

==============
Regards,
Steve
www.stkomp.com
 
Back
Top