There is alot of magic going on behind the scenes (which I will blog about in a separate post), but you do not need to know how it works to use it, e.g expression then the value of the Text property is pushed into a dictionary which the data control can retrieve later.So how does Grid View/Form View/Details View/List View get these values?
So that means when you bind to some raw collection and hook up to the Data Source property then call databind, if you try to handle the delete or update events these dictionaries are going to be empty.
Each data control has a method which is responsible for populating a dictionary of name value pairs from field name to value.
Here is a mapping of data control to method used to extract values: Grid View = public Extract Item Values As we can see with the exception of List View these oh so useful methods are protected, that means we can't call them from our code if we are using these built in controls.
The difference among those 4 server events are, both Row_Inserting and Row_Updating has the code return TRUE by default that is located in the last line before the end of the function; meanwhile both Row_Inserted and Row_Updated does not have it.
As the name said, the server events which contains Insert word (Row_Inserting and Row_Inserted) are being used to add or to insert the new record(s), whereas the server events which contains Update word (Row_Updating and Row_Updated) are being used to update the existing record(s).