Sorting? Is the GridView bound? In that case you could copy and sort the datasource and get the highest value.
If you wish to get the highest value without sorting the actual grid and you cannot sort a datasource you could for each through the rows, get the value of sal, cast it to an integer and retrieve the highest number.
Using LINQ might also be an option here. That way you do not have to sort, but you can still get the Max value.
In VB (you didn't specify a language) something like:
Dim highestValue = DataGridView1.Rows.OfType(Of DataGridViewRow).Max(Function(row) Convert.ToInt32(row.Cells("sal").Value))
In C# (from the top of my head):
int highestValue = DataGridView1.Rows.OfType<DataGridViewRow>.Max(row => Convert.ToInt32(row.Cells("sal").Value))
This could also be applied directly to the datasource, if your grid is bound.