Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / редактирование строки в DataGridView / 14 сообщений из 14, страница 1 из 1
19.02.2013, 18:11
    #38157860
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
DataGridView1 Содержит 2000 записей (строк). После редактирования 2000-ой строки указатель в контроле DataGridView поставлен на нолевую строку. Как его вернуть на редактируемую строку? Чтобы пользователь видел результат, а не искал Где же эта строка, в которую я внёс только-что изменения.
В переменной iCurrentRow сохраняю Номер выбранной
строки в DataGridView1 для редактирования ( внесения изменений )
Код: vbnet
1.
Dim iCurrentRow As Integer = DataGridView1.SelectedCells(0).RowIndex() 


После внесения изменений в столбцы выбранной строки
Хочу вернуться на редактируемую строку, для этого ставлю
Код: vbnet
1.
DataGridView1.Rows(iCurrentRow).Cells(0).Selected = True 


курсор (указатель мыши) становится в
ячейку в НОЛЕВОЙ строке, вместо той строки, номер которой указан в
переменной iCurrentRow
СПАСИБО.
...
Рейтинг: 0 / 0
19.02.2013, 20:48
    #38158048
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
Надо через BindingSource.
Ловить первичный ключ для вновь созданой записи и переходить к нему
...
Рейтинг: 0 / 0
20.02.2013, 10:23
    #38158480
Nicky_N
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
Vova_1805DataGridView1 Содержит 2000 записей (строк).
немножко оффтоп, но все же, имхо, 2000 строк как-то многовато для DataGridView.
...
Рейтинг: 0 / 0
20.02.2013, 13:07
    #38158835
sld
sld
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
использовать FirstDisplayedCell или FirstDisplayedScrollingRowIndex попробовать.
...
Рейтинг: 0 / 0
21.02.2013, 18:06
    #38161246
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
По-моему, эта проблема нерешаема?
Ваши советы я применил, ставил в разных местах приложения,
Но после обновления указатель в гриде УПОРНО становится в ячейку 0,0.
...
Рейтинг: 0 / 0
21.02.2013, 20:50
    #38161419
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
Vova_1805По-моему, эта проблема нерешаема?

Решаема
Cat2Надо через BindingSource.
Ловить первичный ключ записи и переходить к нему
...
Рейтинг: 0 / 0
22.02.2013, 07:10
    #38161673
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
Vova_1805,

храни первичный ключ например в скрытой колонке в в гриде, и после редактирования ищи эту строку например вот так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DataGridViewRow Row = DataGridView1.Rows.Cast<DataGridViewRow>().Where(a=> a.cell["id"].Value == id_строки).FirstOrDefault();
if (Row != null)
{
  Row.Selected = true;
  // следующие 3 строки сохранят позицию редактируемой строки относительно грида
  i = Row.Index - (сохранённый_перед_редактированием_индекс_строки - сохранённый_перед_редактированием_FirstDisplayedScrollingRowIndex);
  if (i < 0)
    i = 0;
  DataGridView1.FirstDisplayedScrollingRowIndex = i;
}
...
Рейтинг: 0 / 0
22.02.2013, 13:10
    #38162135
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
Vova_1805,

используешь ли ты BindingSource
если нет обязательно используй
не лазий по гриду, а ищи нужные тебе данные в BindingSource
...
Рейтинг: 0 / 0
22.02.2013, 13:10
    #38162138
pation
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
фиганычVova_1805,

храни первичный ключ например в скрытой колонке в в гриде, и после редактирования ищи эту строку например вот так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DataGridViewRow Row = DataGridView1.Rows.Cast<DataGridViewRow>().Where(a=> a.cell["id"].Value == id_строки).FirstOrDefault();
if (Row != null)
{
  Row.Selected = true;
  // следующие 3 строки сохранят позицию редактируемой строки относительно грида
  i = Row.Index - (сохранённый_перед_редактированием_индекс_строки - сохранённый_перед_редактированием_FirstDisplayedScrollingRowIndex);
  if (i < 0)
    i = 0;
  DataGridView1.FirstDisplayedScrollingRowIndex = i;
}



такой г-код на помойку
...
Рейтинг: 0 / 0
25.02.2013, 11:11
    #38164332
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
pation,

нормальный код - задачу решает.
...
Рейтинг: 0 / 0
25.02.2013, 16:37
    #38165106
Vova_1805
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
ПОСЛЕ ПРЕОБРАЗОВАНИЯ Вашего кода TO VB NET имеем:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim Row As DataGridViewRow = DataGridView1.Rows.Cast(Of DataGridViewRow)().Where(Function(a) a.cell("id").Value = id_строки).FirstOrDefault()
If Row IsNot Nothing Then
 Row.Selected = True
 ' следующие 3 строки сохранят позицию редактируемой строки относительно грида
 i = Row.Index - (сохранённый_перед_редактированием_индекс_строки - сохранённый_перед_редактированием_FirstDisplayedScrollingRowIndex)
 If i < 0 Then
  i = 0
 End If
 DataGridView1.FirstDisplayedScrollingRowIndex = i
End If



Не сложно ли Вам детализировать віражение в верхней строке
Where(Function(a) a.cell("id").Value = id_строки).FirstOrDefault()
СПАСИБО
...
Рейтинг: 0 / 0
26.02.2013, 05:14
    #38165741
фиганыч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
Vova_1805ПОСЛЕ ПРЕОБРАЗОВАНИЯ Вашего кода TO VB NET имеем:
Не сложно ли Вам детализировать віражение в верхней строке
Where(Function(a) a.cell("id").Value = id_строки).FirstOrDefault()
СПАСИБО

Детализировать... ну могу по другому записать, по старинке:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
DataGridViewRow Row = null;
for (int i = 0; i < DataGridView1.Rows.Count;i++)
{
  if (DataGridView1.Rows[i].Cell["id"].Value == id_строки)
  {
    Row = DataGridView1.Rows[i];
    break;
  }
}
...
Рейтинг: 0 / 0
27.02.2013, 17:49
    #38168454
WitC
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
pationVova_1805,

используешь ли ты BindingSource
если нет обязательно используй
не лазий по гриду, а ищи нужные тебе данные в BindingSource

перемещаться по строкам грида можно с помощью CurrentCell (пример в приложении),
но правильный вариант - BindingSource
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
08.05.2014, 15:17
    #38636918
darvin117
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
редактирование строки в DataGridView
Vova_1805,
не могли бы вы скинуть код, как вы открываете в новой форме нужную вам строку для дальнейшего редактирования? Буду премного благодарен!
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / редактирование строки в DataGridView / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]