I need to keep primary key in grid so that when I need to update a certain row, I can retrieve the latest data based on the primary key, then display it in fields, and then when user changes the fields values, the data can be updated.

There are some methods that allow me to do that, For example I can take a bound field, set its Visible property to False and bind it to my Primary key column. I also can use DataKeyNames property of the GridView

But I dont know which one is the best way to keep primary key hidden in the gridview.