The problem is that the DataUpdated event fires both when the data is loaded (setData) and when the displayed data changes (not only when the page is changed, even if the ordering of the data of a column is changed).
In short, two different events would be needed, one VisibleDataChanged and one DataChanged.