Can't find other Controls from my own Control
- From: "Benton" <conversar@xxxxxxxxx>
- Date: Mon, 4 Dec 2006 11:15:31 -0600
Hi there,
I'm creating a "PopUpDatePicker" control, inheriting from Hyperlink. The goal is to click on that control, select a value from a Calendar and set this date value to a target control, usually a TextBox.
Problem is on the OnPreRender event, where I try to find the target control. The FindControl() method always return null there, that is, the specified Target control is not found on the current page. Here's the event code:
protected override void OnPreRender(EventArgs e)
{
System.Web.UI.Page page = System.Web.HttpContext.Current.Handler as System.Web.UI.Page;
Control control = page.FindControl(TargetControl);
if (control != null) // null is always returned here :(
this.Attributes.Add("onclick", string.Format("window.open('DatePicker.aspx?field={0}', 'calendarPopup', 'width=230,height=209,resizable=no,statusbar=no');", control.ClientID));
base.OnPreRender(e);
}
And below is the full code-behind, too. The question is: Why is the FindControl() method returning null here? The TargetControl property does have the name of the target control on the page (I can see it with the VS debugger) so that is not the problem. So what am I missing?
Thanks in advance,
-Benton
Full code-behind below:
using System;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;
[assembly: TagPrefix("Tenerife.WebControls", "Tenerife")]
namespace Tenerife.WebControls
{
[ToolboxData("<{0}:PopUpCalendar runat=server></{0}:PopUpCalendar>"),
ToolboxBitmap(typeof(Calendar))]
public class PopUpCalendar : HyperLink
{
public PopUpCalendar()
{
this.NavigateUrl = "javascript:;";
this.ImageUrl = "~/img/SmallCalendar.gif";
this.ToolTip = "Click to select date";
}
protected override void OnPreRender(EventArgs e)
{
System.Web.UI.Page page = System.Web.HttpContext.Current.Handler as System.Web.UI.Page;
Control control = page.FindControl(TargetControl);
if (control != null) // This is always false :(
this.Attributes.Add("onclick", string.Format("window.open('DatePicker.aspx?field={0}', 'calendarPopup', 'width=230,height=209,resizable=no,statusbar=no');", control.ClientID));
base.OnPreRender(e);
}
[IDReferenceProperty(typeof(Control))]
[Themeable(false)]
[TypeConverter(typeof(System.Web.UI.WebControls.ValidatedControlConverter))]
[DefaultValue("")]
public string TargetControl
{
get { return ViewState["TargetControl"] == null ? String.Empty : ViewState["TargetControl"].ToString(); }
set { ViewState["TargetControl"] = value; }
}
}
}
.
- Follow-Ups:
- Re: Can't find other Controls from my own Control
- From: Benton
- Re: Can't find other Controls from my own Control
- Prev by Date: Custom Datagrid disappearing on Postback
- Next by Date: Re: Can't find other Controls from my own Control
- Previous by thread: Custom Datagrid disappearing on Postback
- Next by thread: Re: Can't find other Controls from my own Control
- Index(es):
Relevant Pages
|
Loading