Before the GridView control can be rendered, a GridViewRow object must be created for each row in the control. The RowCreated event is raised each time a row in the GridView control is created. This allows you to provide an event-handling method that performs a custom routine, such as adding custom content to a row, whenever this event occurs.

Similarly, each row in the control must be bound to a record in the data source before the GridView control can be rendered. The RowDataBound event is raised when a data row (represented by a GridViewRow object) is bound to data in the GridView control. This allows you to provide an event-handling method that performs a custom routine, such as modifying the values of the data bound to the row, whenever this event occurs.

A GridViewRowEventArgs object is passed to the event-handling method, which allows you to access the properties of the row that raised the event. To access a specific cell in the row, use the Cells property of the GridViewRow object contained in the Row property. You can also determine which row type (header row, data row, and so on) is being created by using the RowType property of the GridViewRow object.