Восстановить выделенную строку DevExpress XtraGrid после RefreshDatasource
Я использую DevExpress XtraGrid. У меня есть список объектов в качестве источника данных сетки, каждый объект может содержать (или нет) список похожих объектов и так далее. Таким образом, у меня есть своего рода иерархия. Таким образом, сетка для каждого внутреннего списка объектов создает дочернее представление. Когда я добавляю новый объект в источник данных и вызываю RefreshDatasource(), сетка полностью сворачивается, и я должен снова перейти вниз по уровням сетки к моей ранее сфокусированной строке.
Есть ли какой-нибудь способ восстановить целевую строку после обновления источника данных на любом подуровне дочерних представлений?
2 ответа
Я думаю, что эта статья даст вам хорошее начало для успешного решения вашей задачи;) В ней описан способ сохранения состояния представления всех (дочерних) представлений в XtraGrid с примером кода.
Это целый набор кода, но вы можете легко скопировать / вставить его, чтобы проверить и протестировать.
Здесь вам нужно сохранить выделенную строку перед добавлением / вставкой нового объекта в существующие данные сетки и операцию обновления. Как только вы закончите с операцией обновления данных сетки, вы можете установить ранее сфокусированный объект, установив маркер фокусированной строки. Чтобы получить текущий дескриптор строки в случае сетки MasterDetail, вы должны перейти по ссылке ниже: Как получить родительский дескриптор / дескриптор строки в сетке master/detail