Я разрабатываю вариант DGV, который способен отображать иерархические данные, такие как TreeView. Сложность в том, что и список корневых строк, и списки дочерних строк должны поддерживать огромные коллекции, поэтому я хочу, чтобы они были виртуальными. Лучший способ сделать эту работу - переопределить базовый CellValueNeeded с тем, который имеет список индексов строк вместо одного индекса строк. Таким образом, список индекса строки, такой как {42,123,45}, будет означать «46-ую дочернюю строку из 124-й дочерней строки из 43-й корневой строки».
Эффективное отображение из индекса плоских строк в иерархический список (и наоборот) для потенциально миллионов строк потребует некоторых умных структур данных. Кто-нибудь уже сделал это и может дать несколько советов?