I have a grid arranged to have a groupByRow and the underneath child rows. At the runtime. I used ListObject to change the value of the cell of the row. It got changed. But the new value did not display (refresh) until I mouse over the cell. The similar thing happened when I used ListObject to change the value of one cell in the row and applied the change to all sibling rows, the value of the cell got changed, but the sibling rows, until the mouse hovering them and they got changed.
This seems the grid refresh issue, can you tell me how I can work around it, I want the grid refresh immediately after the underneath ListObject is changed.
It sounds like your data source is not notifying the grid that a value has been change, so the grid doesn't ask for the value again until that cell is invalidated (i.e. by mousing over it). Does your data source implement IBindingList? If so, you will probably have to implement INotifyPropertyChanged on your list object class so that that BindingList implementation can hook into that event and notify the grid via a ListChanged event.
-Matt
I do use BindingList, but I dont need to implement INotifyPropertyChanged. I have it fixed by calling
grid.DisplayLayout.Bands[ 0 ].SortedColumns.RefreshSort( true );
when the value got changed.
If this solution works for you, that's fine, especially if the underlying list changes mean that the grouped rows will be changed as well, but otherwise it's pretty inefficient to resort the entire grid just when a (potentially visible) cell's value has been changed, which is why I had suggested implementing the INotifyPropertyChanged interface.