master pages and AJAX controls

  • Thread starter Thread starter mike
  • Start date Start date
M

mike

I'm having a problem getting AJAX working with a master page.

I have created a new website using the AJAXControlToolkit template and
default.aspx as follows.

<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/
TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Panel ID="Panel1" runat="server" Height="134px"
Width="217px">
This is where the definition goes! It should be invisible
until the LinkButton is hovered on.

</asp:Panel>
<br />
<asp:LinkButton ID="LinkButton1"
runat="server">LinkButton</asp:LinkButton><br />
<ajaxToolkit:AnimationExtender ID="AnimationExtender1"
runat="server" TargetControlID="LinkButton1">
<Animations>
<OnHoverOver>
<FadeIn AnimationTarget="Panel1" Duration=".
5" />
</OnHoverOver>
<OnHoverOut>
<FadeOut AnimationTarget="Panel1" Duration=".
5" />
</OnHoverOut>
</Animations>

</ajaxToolkit:AnimationExtender>
</form>
</body>
</html>

This page works correctly, fading in when hovering over the LinkButton
and fading out when moving off.

Then I created a master page (I added nothing to it) and a new WebForm
based on this master page.

Here's the WebForm.

<%@ Page Language="C#" MasterPageFile="~/MasterPage.master"
AutoEventWireup="true" CodeFile="ATKTest.aspx.cs" Inherits="ATKTest"
Title="Untitled Page" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1"
Runat="Server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />

<asp:Panel ID="Panel1" runat="server" Height="134px"
Width="217px">
This is where the definition goes! It should be
invisible until the LinkButton is hovered on.

</asp:Panel>
<br />
<asp:LinkButton ID="LinkButton1" runat="server">AM -
Amplitude</asp:LinkButton><br />
<ajaxToolkit:AnimationExtender ID="AnimationExtender1"
runat="server" TargetControlID="LinkButton1">
<Animations>
<OnHoverOver>
<FadeIn AnimationTarget="Panel1" Duration=".
5" />
</OnHoverOver>
<OnHoverOut>
<FadeOut AnimationTarget="Panel1" Duration=".
5" />
</OnHoverOut>
</Animations>

</ajaxToolkit:AnimationExtender>
</div>
</asp:Content>

this page does not work and generates a Javascript error as follows:
----------
Sys.ArgumentException:
AjaxControlToolKit.Animation.Animation.set_animationTarget requires
the ID
of a Sys.UI.DomElement or a Sys.UI.Control. No element or control
could be
found corresponding to 'Panel1'
Parameter name: id
 
you need a form in the master page if you remove it from the page.

-- bruce (sqlwork.com)
 
The master page has a form tag in it - it is the exact master page
that is created when you select 'New' from the menu and 'Master Page'
from the dialog.
 
Sys.ArgumentException:
AjaxControlToolKit.Animation.Animation.set_animationTarget requires
the ID
of a Sys.UI.DomElement or a Sys.UI.Control. No element or control
could be
found corresponding to 'Panel1'
Parameter name: id
-----------

Any help is greatly appreciated!

Mike

Being a newbie on this myself, I had a table in an updatepanel and
was getting the same/similar error (from memory).

I had to do something in the codebehind in the page_load method like:

if (table1 == null) table1 = new Table()

then I had to add it to the form using

form1.Controls.Add(table1).


Not sure quite why I had to do this, but it seemed to fix the problem.
 
Being a newbie on this myself, I had a table in an updatepanel and
was getting the same/similar error (from memory).

I had to do something in the codebehind in the page_load method like:

if (table1 == null) table1 = new Table()

then I had to add it to the form using

form1.Controls.Add(table1).

Not sure quite why I had to do this, but it seemed to fix the problem.

The error stems from the fact that MasterPages mangle the ID of
controls - Panel1 becomes ctl00_ContentPlaceHolder1_Panel1 (in my
case).
If I hard code this in, it works fine. Maybe creating the
AnimationExtender at runtime in PageLoad would allow me to set the
AnimationTarget to the correct ID, which I can find by using
FindControl. I'll play with it and see.

Mike
 
The error stems from the fact that MasterPages mangle the ID of
controls - Panel1 becomes ctl00_ContentPlaceHolder1_Panel1 (in my
case).
If I hard code this in, it works fine. Maybe creating the
AnimationExtender at runtime in PageLoad would allow me to set the
AnimationTarget to the correct ID, which I can find by using
FindControl. I'll play with it and see.
The control's ClientID property will provide the control's decorated
name.The assignment

AnimationExtender.AnimationTarget = Panel1.ClientID;

or something similar should work FB

regards
A.G.
 
The error stems from the fact that MasterPages mangle the ID of
controls - Panel1 becomes ctl00_ContentPlaceHolder1_Panel1 (in my
case).
If I hard code this in, it works fine. Maybe creating the
AnimationExtender at runtime in PageLoad would allow me to set the
AnimationTarget to the correct ID, which I can find by using
FindControl. I'll play with it and see.

Mike

I think there is a UniqueID property.

So something like Panel1.UniqueId.ToString.

I'd have to check tho.
 
Back
Top