Trace option for ASP.NET control will be useful to inspect event sequence.

Sometimes to understand sequence of events in ASP.NET page, it is useful to set
@page TRACE=”true”
It shows(among other details) the sequence of page events and time that took each event to execute.
However you can’t request the same trace facility for user control events. You have to insert your own Trace.WriteLine (or similar) statements, which is quite annoying. I’ve posted the suggestion to MS Feedback site, but they do not want to implement it.
 
Related articles that describe events  and events order:
FAQ: Sequence that events are raised for Pages, UserControls

ASP.NET Page Life Cycle Overview (and quick sheet)

Not directly related article: Control State vs. View State Example
Advertisements

Function to get parent GridView for GridViewRow

A reference to the GridView can be obtained by using gridViewRow.Parent.Parent or (GridView) gridViewRow.NamingContainer(quote from here).

So I’ve created the static function:

        public static GridView GetParentGridView(GridViewRow row)
        {
            //NOTE row.Parent doesn’t return GridView
            GridView gridView = (GridView)row.NamingContainer;
            return gridView;
        }
 

 

Visual Studio Editor doesn’t provide interface to create Event Handlers in ASP.NET Web Pages

But you can’t select the page object in Design view to specify events in Properties.

In code-behind pages that use C#, because the control name will not appear in the drop-down list.

It seems that C# event handler for page can be created only manually!?
According to VS2008 help, the new version has no improvement in this area.
Why C# editor doesn’t have control drop-down list on the left top corner, as VB editor has?

Min and Max methods for DateTime

Math.Max Method doesn’t have overload for DateTime

So I’ve created

        public static DateTime Min(DateTime t1, DateTime t2)

        {

            if (DateTime.Compare(t1, t2) > 0)

            {

                return t2;

            }

            return t1;

        }

        public static DateTime Max(DateTime t1, DateTime t2)

        {

            if (DateTime.Compare(t1, t2) < 0)

            {

                return t2;

            }

            return t1;

        }

 

Reduce use of HTTPS protocol as much as possible

I’ve noticed that some pages on our site were opened from my home computer with huge delay –more than 30sec, but others- almost instantly.
The problem was with pages that use HTTPS(SSL protocol). It seams that my internet provider had performance problem, but it had huge impact on pages that was opened using SSL.
In the normal development/test environment we never noticed the problem, but it could be a big issue  for users with low bandwidth. 
 
We need to redesign our application to use https protocol only for a few pages, that work with passwords and credit cards. It also will help with annoying messages: “The page has both secure and un-secure sections”
 
There are a few related links :
 

Visual Studio new item wizard generates ambiguous class names

When I added a new Master page in Visual Studio 2005, named as MyApp.Master, the generated class was named just MyApp.
I’ve already have a namespace with the same name MyApp, and it caused the compiler errors.
It will be good if new file wizard by default create class names, that include the type of generated object, e.g. MyAppMaster class.
Similar should be apply for other ASP.NET objects, e.g. Customer.aspx page should use CustomerPage class, and Customer.ascx user control should use CustomerUsc class. 

Differences in Internet Explorer and FireFox CSS and Javascript

I’ve done quite a few web UI changes, including CSS styles and javascript testing in IE. Now I have to  ensure, that it also work in FioreFox.

The suggested  Collection of Global CSS Reset Styles not always work , if site has already some default style settings.
I also incorrectly used parentElement in DOM – always use parentNode instead.
innerText
Thanks to Damian Edwards who pointed another FireFox incompatibility bug in our javascript code:
The line in javascript causing the issue easily figured out using Firebug.
 The elem.innerText property is an IE proprietary addition and thus not usually supported by other browsers. Instead you should be getting the “inner text” of the cell using something like the following:

elem.firstChild.nodeValue;

This uses W3C DOM compliant properties to retrieve the text value of the first TextNode of the cell. This makes it more likely to work across browsers.

 
Width in IE and Firefox   treated differently.
According to standard (that FireFox follows), content width is set excluding paddings and border(see figure there).
“The size of the box is the sum of the element width (i.e. formatted text or image) and the padding, the border and the margin areas”.
But in IE the width of the box is the width of the content plus any border or padding.
In other words:
width(IE)=”padding-left”+”border-left”+ width(FF) + “padding-right”+”border–right”.
To make IE to follow standard can be done by specifying
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”
    “http://www.w3.org/TR/html4/loose.dtd”>
or
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0//EN”>
Unfortunately, this change will have MAJOR impact on existing web site. In our application we effectively have one page with different user controls loaded dynamically, so the change will effect everything -too risky.
Class and ID Names are Case Sensitive in FireFox
IE is not case sensitive, when you search by ID.  If your  script is working in IE, but not if FF, check that the IDs are written consistently.
More tips can be found in Adrian Anttila’s post JavaScript differences in Firefox and Internet Explorer  
Different Tools.
For IE I mentioned some tools in my older post Tools to debug/Trace ASP.NET applications.