thanks for your input~!
Based on my test, none of them will run if the control is invisible. Here's
my test code:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Init(object sender, EventArgs e) {
MyControl p = new MyControl();
this.form1.Controls.Add(p);
p.Controls.Add(new TextBox());
p.Visible = false;
}
}
public class MyControl : Panel
{
protected override void CreateChildControls()
{
base.CreateChildControls();
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
}
protected override void Render(HtmlTextWriter writer)
{
base.Render(writer);
}
}
Could you double check it? If the Render runs on your side please send me a
demo project that can reproduce this problem. My email is
v-al...@microsoft.com.
Regards,
Allen Chen
Microsoft Online Support
Delighting our customers is our #1 priority. We welcome your comments and
suggestions about how we can improve the support we provide to you. Please
feel free to let my manager know what you think of the level of service
provided. You can send feedback directly to my manager at:
msd...@microsoft.com.
==================================================
Get notification to my posts through email? Please refer to
http://msdn.microsoft.com/en-us/subscriptions/aa948868.aspx#notifications.
Note: The MSDN Managed Newsgroup support offering is for non-urgent issues
where an initial response from the community or a Microsoft Support
Engineer within 1 business day is acceptable. Please note that each follow
up response may take approximately 2 business days as the support
professional working with you may need further investigation to reach the
most efficient resolution. The offering is not appropriate for situations
that require urgent, real-time or phone-based interactions or complex
project analysis and dump analysis issues. Issues of this nature are best
handled working with a dedicated Microsoft Support Engineer by contacting
Microsoft Customer Support Services (CSS) at
http://support.microsoft.com/select/default.aspx?target=assistance&ln=en-us.
==================================================
This posting is provided "AS IS" with no warranties, and confers no rights.
--------------------
| From: "TS" <manofs...@nospam.nospam>
| Subject: Control life cycle events not firing when control is invisible
| Date: Mon, 29 Sep 2008 13:10:15 -0500
| Lines: 7
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2900.3028
| X-RFC2646: Format=Flowed; Original
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
| Message-ID: <eLd0j6l...@TK2MSFTNGP02.phx.gbl>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 168.38.106.193
| Path: TK2MSFTNGHUB02.phx.gbl!TK2MSFTNGP01.phx.gbl!TK2MSFTNGP02.phx.gbl
| Xref: TK2MSFTNGHUB02.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:1121
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
that seems a little weird behavior, seems like all or none should run.
"Allen Chen [MSFT]" <v-al...@online.microsoft.com> wrote in message
news:dAdUBSqI...@TK2MSFTNGHUB02.phx.gbl...
I think it's reasonable. If we set visibility on certain stage before the
Render the Render may run/not run. Here's the source code of the
Control.RenderControl method and the RenderControlInternal method. Let's
see what happens there:
protected void RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
{
if (!this.flags[0x10] && !this.flags[0x200])
{
HttpContext context = (this.Page == null) ? null :
this.Page._context;
if ((context != null) && context.TraceIsEnabled)
{
int bufferedLength = context.Response.GetBufferedLength();
this.RenderControlInternal(writer, adapter);
int num2 = context.Response.GetBufferedLength();
context.Trace.AddControlSize(this.UniqueID, num2 -
bufferedLength);
}
else
{
this.RenderControlInternal(writer, adapter);
}
}
}
private void RenderControlInternal(HtmlTextWriter writer, ControlAdapter
adapter)
{
if (adapter != null)
{
adapter.BeginRender(writer);
adapter.Render(writer);
adapter.EndRender(writer);
}
else
{
this.Render(writer);
}
}
We can see if control's flags[0x10] is true the Render method will not run.
The flags[0x10] represents the visibility of the control. To confirm this
please try following code:
Panel p = new Panel();
protected void Page_Load(object sender, EventArgs e)
{
p.PreRender += new EventHandler(p_PreRender);
p.Visible = false;//comment this line to test
this.form1.Controls.Add(p);
}
protected override void OnSaveStateComplete(EventArgs e)
{
base.OnSaveStateComplete(e);
//set a breakpoint here and check p.flags[0x10] in the watch window.
}
void p_PreRender(object sender, EventArgs e)
{
}
Please feel free to ask if you have anything unclear.
Regards,
Allen Chen
Microsoft Online Community Support
--------------------
| From: "TS" <manofs...@nospam.nospam>
| References: <eLd0j6l...@TK2MSFTNGP02.phx.gbl>
<dAdUBSqI...@TK2MSFTNGHUB02.phx.gbl>
| Subject: Re: Control life cycle events not firing when control is
invisible
| Date: Tue, 30 Sep 2008 14:23:32 -0500
| Lines: 105
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2900.3028
| X-RFC2646: Format=Flowed; Original
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
| Message-ID: <#nbFMIzI...@TK2MSFTNGP05.phx.gbl>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 168.38.106.193
| Path: TK2MSFTNGHUB02.phx.gbl!TK2MSFTNGP01.phx.gbl!TK2MSFTNGP05.phx.gbl
| Xref: TK2MSFTNGHUB02.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:1124
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
Have you got the expected answer?
Regards,
Allen Chen
Microsoft Online Support
--------------------
| From: "TS" <manofs...@nospam.nospam>
| References: <eLd0j6l...@TK2MSFTNGP02.phx.gbl>
<dAdUBSqI...@TK2MSFTNGHUB02.phx.gbl>
| Subject: Re: Control life cycle events not firing when control is
invisible
| Date: Tue, 30 Sep 2008 14:23:32 -0500
| Lines: 105
| X-Priority: 3
| X-MSMail-Priority: Normal
| X-Newsreader: Microsoft Outlook Express 6.00.2900.3028
| X-RFC2646: Format=Flowed; Original
| X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3028
| Message-ID: <#nbFMIzI...@TK2MSFTNGP05.phx.gbl>
| Newsgroups: microsoft.public.dotnet.framework.aspnet.buildingcontrols
| NNTP-Posting-Host: 168.38.106.193
| Path: TK2MSFTNGHUB02.phx.gbl!TK2MSFTNGP01.phx.gbl!TK2MSFTNGP05.phx.gbl
| Xref: TK2MSFTNGHUB02.phx.gbl
microsoft.public.dotnet.framework.aspnet.buildingcontrols:1124
| X-Tomcat-NG: microsoft.public.dotnet.framework.aspnet.buildingcontrols
|
"Allen Chen [MSFT]" <v-al...@online.microsoft.com> wrote in message
news:o17u4HbK...@TK2MSFTNGHUB02.phx.gbl...