RecordIndex вне диапазона - PullRequest
1 голос
/ 25 июля 2011

Я борюсь с сеткой DevExpress и мне было интересно, есть ли у кого-нибудь хороший совет по этому вопросу. Этот код вызывает у меня горе:

If GridView.Controller.SelectedRecordCount > 0 Then
Begin
    CurrentGridRow := GridView.DataController.GetRowID( 
                      GridView.Controller.SelectedRecords[ 0 ].RecordIndex );
End
Else
    CurrentGridRow := 0;

Исключение возникает при попытке получить идентификатор строки, и оно корректно, потому что этот код находится в вызове метода RefreshData, и только что произошло изменение, из-за которого запись исчезла из таблицы. Таким образом, что мне нужно решить, так это каким-то образом сказать, действителен ли индекс записи. Я посмотрел вокруг, но я не могу найти ничего полезного, и Google не хотел поделитесь своими вкусностями на этом.

Кто-нибудь получил хороший совет о том, как убедиться, что индекс записи действителен?

Большое спасибо!

Andrea

1 Ответ

2 голосов
/ 25 июля 2011

Немного углубившись в источник DevEx, я вижу, что GetRowID ожидает RowIndex в качестве параметра, а не RecordIndex при передаче.

RecordIndex - это, ну, индекс записи во внутреннем DataSet сетки. RowIndex является индексом записи, как показано визуально. Таким образом, самый верхний видимый ряд вашей сетки имеет RowIndex = 0

Глядя на ваш код, я думаю, что вы хотите GetRowIndexByRecordIndex. Визуальный указатель первой выбранной записи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...