Восстановить выделенную строку DevExpress XtraGrid после RefreshDatasource

Я использую DevExpress XtraGrid. У меня есть список объектов в качестве источника данных сетки, каждый объект может содержать (или нет) список похожих объектов и так далее. Таким образом, у меня есть своего рода иерархия. Таким образом, сетка для каждого внутреннего списка объектов создает дочернее представление. Когда я добавляю новый объект в источник данных и вызываю RefreshDatasource(), сетка полностью сворачивается, и я должен снова перейти вниз по уровням сетки к моей ранее сфокусированной строке.

Есть ли какой-нибудь способ восстановить целевую строку после обновления источника данных на любом подуровне дочерних представлений?

2 ответа

Решение

Я думаю, что эта статья даст вам хорошее начало для успешного решения вашей задачи;) В ней описан способ сохранения состояния представления всех (дочерних) представлений в XtraGrid с примером кода.

Это целый набор кода, но вы можете легко скопировать / вставить его, чтобы проверить и протестировать.

Здесь вам нужно сохранить выделенную строку перед добавлением / вставкой нового объекта в существующие данные сетки и операцию обновления. Как только вы закончите с операцией обновления данных сетки, вы можете установить ранее сфокусированный объект, установив маркер фокусированной строки. Чтобы получить текущий дескриптор строки в случае сетки MasterDetail, вы должны перейти по ссылке ниже: Как получить родительский дескриптор / дескриптор строки в сетке master/detail

Другие вопросы по тегам