?
Solved

asp.net - last event that fires on a page

Posted on 2013-05-14
3
Medium Priority
?
364 Views
Last Modified: 2013-05-16
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)
0
Comment
Question by:Tom Knowlton
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
3 Comments
 
LVL 18

Accepted Solution

by:
Jerry Miller earned 2000 total points
ID: 39166964
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
 
LVL 5

Author Comment

by:Tom Knowlton
ID: 39168402
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
 
LVL 5

Author Closing Comment

by:Tom Knowlton
ID: 39172064
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

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
For those of you who don't follow the news, or just happen to live under rocks, Microsoft Research released a beta SDK (http://www.microsoft.com/en-us/download/details.aspx?id=27876) for the Xbox 360 Kinect. If you don't know what a Kinect is (http:…
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question