Rowupdating oldvalues newvalues
The important point is not which of these two events call Bind Data, but one of them must or the Grid View will not be updated. When bound using a Data Source ID, the Grid View internally tracks the current Sort Expression and Sort Direction, and those are available through properties with the same names.When you manually bind the Grid View, this tracking does not occur, so we must implement some mechanism for tracking those values.
For the Bound Field, we don’t know the ID of the Text Box since it’s autogenerated by the Bound Field, so we obtain a reference to it by getting the first control in the appropriate cell in the edited row.For the Template Field, we do know the ID of the control since we specified it in the markup, so we obtain a reference to it by calling Find Control on the appropriate row of the Grid View.The Grid View Row is the naming container for the Text Box in this case, so we need to call Find Control on the appropriate row, but we do not need to call it on the specific cell.In both cases, the controls are added to the controls collection for the cell.You can see that in the case of a Template Field, the exact spacing within the control becomes significant, so it’s generally better to get a reference to the control by ID using Find Control than to use the Controls collection.In addition to that, we’re resetting the Edit Index and Selected Index when the page is changed to avoid cases, for example, where you change pages and are suddenly editing a different item.
Bind Data could be called in Page Index Changing, but to show that it the event is raised, we’ve handled that in Page Index Changed.
Once we have a reference to the Text Box, we set the new last name and save the changes (through the Submit Changes method).
When a Bound Field is displaying data (not in edit mode), the appropriate text is added to the Text property of the appropriate cell.
If we were using a Template Field instead, the compiler translates the markup in the templates to the appropriate types of controls in the same way as the page markup in parsed.
For this example, the Item Template would be transformed into a Literal control, and the Edit Item Template would be transformed into a Literal control, a Text Box, and a Literal control (the literal controls would include the spacing between the Edit Item Template tags and the Text Box tags).
We also want it to be something persistent, so that, for example, if you sort, then page, the sort is maintained.