Once we have a reference to the Text Box, we set the new first name.
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 original method shown above did not implement any sorting, but now that we have a place to store the Sort Expression and Sort Direction we need to change that.
After specifying the query, we add the appropriate sorting. When you bind a Grid View through a Data Source ID, the Grid View will update this value since it is internally tracking the sort expression, so it knows when to switch between ascending and descending.
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.When you manually bind the Grid View, this tracking does not occur, so we must implement some mechanism for tracking those values.We also want it to be something persistent, so that, for example, if you sort, then page, the sort is maintained.In this example, we’ll go through a fully featured Grid View with editing, deleting, selecting, sorting, and paging functionality that is manually bound and identify the limitations and some of the workarounds. Sql Data Source, Object Data Source, Linq Data Source, etc) specified in a Data Source ID, the Grid View can automate many functions because, through the data source control, the Grid View on its own can perform the following operations: When you manually bind data to a Grid View, the Grid View itself cannot perform these operations, so they must be implemented in your code.The Grid View does know the events that should be used to implement them, so the exceptions shown above are thrown when you try to perform one of these operations, but you have implemented the appropriate event handler.