Yes, I do reload data on page load, as I stated in my question there is no problem with reloading data but just checkbox controls have this issue, even after I click on one of those column headers in order to sort and check the debug mode I can see the data are correctly assign to the check box controls, but the program still renders the old values on UI.
example: when I make a selection (e.g. the first three items) and then sort the grid, the first three items are still selected even though those are now no longer the three I chose before sorting.
also I should mention this the problem is only for checkbox control not label or button controls.
I found that someone else has the same issue here but the problem was mainly for kentico default buiiltin checkbox not customized ones.