asp.net - last event that fires on a page

In this code snippet I am loading a control at runtime.

"ptg"


I try to call a public method of the control  (  "HideFrame"  ) which turns some <div> tags invisible, because under this circumstance, I don't want them to show.

It fails because I think the HTML for the "ptg" control is not full rendered.



  Reo.ContentControls.PostponedTaskGridPopup ptg = ((Reo.ContentControls.PostponedTaskGridPopup)LoadControl("~/ContentControls/PostponedTaskGridPopup.ascx"));


                    ptg.FillVariablesThroughPassedInData(assetTaskIdSid, this.AssetIdSid, "normal");

                    

                    Table t = new Table();
                    TableRow trName = new TableRow();
                    TableRow trRole = new TableRow();
                    TableRow trDate = new TableRow();
                    TableRow trLink = new TableRow();


                    t.Rows.Add(trName);
                    t.Rows.Add(trDate);
                    t.Rows.Add(trRole);
                    t.Rows.Add(trLink);


                    TableCell tdName = new TableCell();
                    TableCell tdRole = new TableCell();
                    TableCell tdDate = new TableCell();
                    TableCell tdLink = new TableCell();

                    TableCell tdPostpone = new TableCell();

                    tdPostpone.RowSpan = 4;

                    trName.Cells.Add(tdName);
                    trName.Cells.Add(tdPostpone);
                    trRole.Cells.Add(tdRole);
                    trDate.Cells.Add(tdDate);
                    trLink.Cells.Add(tdLink);


                    tdName.Controls.Add(lbl);

                    tdPostpone.Controls.Add(ptg);









/////////// THIS FAILS //////////////////////
                    ptg.HideFrame();

Open in new window





 public void HideFrame()
        {
            //hide surrounding divs and layout stuff
            
            HtmlGenericControl fh = ((HtmlGenericControl)FindControl("frame_header"));
            HtmlGenericControl fr = ((HtmlGenericControl)FindControl("frame"));
            fh.Visible = false;
            fr.Attributes.CssStyle.Clear();
        }

Open in new window




//fails
fh.Visible = false

fails because fh is null.


I think it is because the page rendering is not far enough along to be able to hide the <div>.

So my question is - how can I know when it is safe to hide the control (the div)
LVL 5
Tom KnowltonWeb developerAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
Jerry MillerConnect With a Mentor Commented:
This may help you out. It explains the  page life cycle in asp.net.

http://msdn.microsoft.com/en-us/library/ms178472%28v=vs.100%29.aspx

The PreRender event may be the one that you need.

"Occurs after the Control object is loaded but prior to rendering."

http://msdn.microsoft.com/en-us/library/system.web.ui.control.prerender%28v=vs.100%29.aspx
0
 
Tom KnowltonWeb developerAuthor Commented:
I tried PreRender.

I also tried Page_Unload, which I think is the last event  (but I think it fires after the page has been sent to the client, so is of no use)

Is there something **right before** Page_Unload, but after Pre_Render?  Like a "Post_Render" ??

I'll take a closer look at the page life cycle.
0
 
Tom KnowltonWeb developerAuthor Commented:
I eventually solved this with jQuery:


 $('div[id*="_divPostponedTaskGrid"]').each(function () {

            var tablecount = $(this).children('div').children().size();
           
            if (tablecount == 0) {
                $(this).closest('#frame').hide();
            }
            else {
                $(this).closest('#frame').css('background-image', 'none');
            }
        });

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.

All Courses

From novice to tech pro — start learning today.