Встать на запись в Gride

runaway
Дата: 17.03.2005 09:27:12
Всем привет!
Задача стоит такая, вроде и не сложная но что-то не получается!

Приложение Win.

1. Заполнил DS.
2. Перенес из DS в Grid
3. Обновил данные в Gride (Запомнил строку на которй стою)
row = (DataGrid1.CurrentCell.RowNumber)

4. Занес изменения в БД
5. Заполнил DS новыми данными.
6. Перенес из DS в Grid
7. Необходимо встать на строку на которой был в момент занесения данных в БД
пытаюсь делать так
DataGrid1.Select(row)

Выделение проходит но как прокрутить скролинг до нужного места?

Спасибо!
Sa
Дата: 17.03.2005 10:00:38
runaway

CurrentCell.RowNumber

Принципиальный момент, встать на туже строку в гриде ? или требуется встать на туже запись вашего DataTable?

uid = Sa
runaway
Дата: 17.03.2005 10:43:02
По условию задачи, после выполнения процедуры
запись поднимается на одну строку вверх либо опускается
на одну строку вниз.

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


row = (DataGrid1.CurrentCell.RowNumber)

row = (DataGrid1.CurrentCell.RowNumber - 1) or
row = (DataGrid1.CurrentCell.RowNumber + 1)
Sa
Дата: 17.03.2005 10:53:37
runaway

По условию задачи, после выполнения процедуры
запись поднимается на одну строку вверх либо опускается
на одну строку вниз.

Вы можете однозначно идентифицировать эту запись, создано ли поле идентификатора?

Какой язык разработки?

Если C# то дам ссылку на C# форум, если VB.NET то напишу код здесь.

uid = Sa
runaway
Дата: 17.03.2005 11:08:09
Что значит
однозначно идентифицировать эту запись

Уникальные поля есть!
А язык VB!
Sa
Дата: 17.03.2005 11:20:22
Dim crm As CurrencyManager = CType(Me.BindingContext(Me.DataGrid1.DataSource, Me.DataGrid1.DataMember), CurrencyManager)
Dim row as DataRowView = CType(crm.Current, DataRowView)
' сохраним в myInt значение уникального поля текущей строки DataGrid1
Dim myInt as Integer = CType(row("MyUniqueIDColumnName"), Integer) - уникальное поле типа Integer 
MyRefresh(); ' пусть в этом методе произошло обновление данных грида и грид потерял позицию
Dim dv As DataView = CType(crm.List, DataView)
Dim i As Integer
For i = 0 To dv.Count - 1
    If CType(dv(i).Row("MyUniqueIDColumnName"), Integer) = myInt Then
        crm.Position = i
        Exit For
    End If
Next i

uid = Sa
runaway
Дата: 17.03.2005 13:18:23
Спасибо все работает!

И вопрос к уважаемому Sa!
Где можно взять компоненты к MSVS 2003 (желательно FREE).
В частности необходим Грид


Спасибо!
Sa
Дата: 17.03.2005 13:44:26
runaway

Где можно взять компоненты к MSVS 2003 (желательно FREE).


Поповоду FREE компонентов, то http://www.codeproject.com = A LOT!!!
По бесплатным гридам я ситуацию не отслеживаю, раньше SourceGrid был перспективным.

А платных и навороченных в сети много. См. гриды от ComponentOne, NetAdvantage, DevExpress, Syncfusion
Janus - тоже симпатичный :-), неплохой и бесплатный грид будет в NW2.0 - DataGridView
and etc.

uid = Sa
mmxx
Дата: 22.04.2005 18:53:41
Sa

For i = 0 To dv.Count - 1
    If CType(dv(i).Row("MyUniqueIDColumnName"), Integer) = myInt Then
        crm.Position = i
        Exit For
    End If
Next i


А если задача ставится - выделить ту же запись после обновления грида.
Можно ли обойтись без цикла с поиском нужного ИД?
покрасивее нету решения?
Sa
Дата: 22.04.2005 22:26:31

А если задача ставится - выделить ту же запись после обновления грида.
Можно ли обойтись без цикла с поиском нужного ИД?
покрасивее нету решения?


в поисках ... посмотрите это:
/topic/107297

uid = Sa