DataKeyNames property is used to specify the field or fields that represent the primary key of the data source.
The data key names/values are stored in the ViewState so they are available at any moment after grid have been data-bound, after postbacks, etc. This collection is used when editing data, and for automatic relations when binding an hierarchical grid
GroupLoadMode="Client" expands groups client-side, without a postback. This means that the data for all groups, whether they are expanded or not, must be loaded on the client.Please check this link for more reference.