powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить экземпляр DataRow из отсортированного Grid'a
6 сообщений из 6, страница 1 из 1
Как получить экземпляр DataRow из отсортированного Grid'a
    #33439349
Gasanov2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите, please...
Есть DataGrid Grid1 в котором отображаются данные из DataTable Table1

Делаю примерно так
DataRow Row = Table1.Rows[Grid1.CurrentRowIndex];
Если Grid1 не сортирован все нормально, получаю текущий Row
А если Grid1 отсортировать щелчком по заголовку какой-либо колонки, выполнив
DataRow Row = Table1.Rows[Grid1.CurrentRowIndex];
получаю вовсе не текущий Row.

Проблема в том что Table1.Rows[Grid1.CurrentRowIndex] возвращает Row который был под индексом Grid1.CurrentRowIndex до сортировки.

Как мне получить и Grid'a текущий Row таблицы, независимо от сортировки????



Каждая сложная вещь есть совокупность простых вещей
...
Рейтинг: 0 / 0
Как получить экземпляр DataRow из отсортированного Grid'a
    #33439555
Devider
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CurrencyManager crm = (CurrencyManager)this.BindingContext[this.dataGrid1.DataSource, this.dataGrid1.DataMember];
DataView dv = (DataView) crm.List;
DataRow row = dv[crm.Position].Row;
Это?
...
Рейтинг: 0 / 0
Как получить экземпляр DataRow из отсортированного Grid'a
    #33439596
SerP1983
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том, что есть некий DataView по умолчанию, который и реализует сортировку. Попробуй в DataSource пихать не DataTable а DataView. А строку брать из этого DataView
...
Рейтинг: 0 / 0
Как получить экземпляр DataRow из отсортированного Grid'a
    #33439615
Фотография Sv219
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сматри DefaultView, щас МСДНа под рукой нет и напишу на память, будет помоему так : Table1.DefaultView[Grid1.CurrentRowIndex];
...
Рейтинг: 0 / 0
Как получить экземпляр DataRow из отсортированного Grid'a
    #33441175
Gasanov2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо...
Проблему решил, правда не очень "красиво"....
Добавил TextBox TextBox1 на форму, который связал с первичным ключом (его имя ID) таблицы Table1.

Текущую строку получаю так:
DataRows[] Rows = Table1.Rows.Select("ID = " + TextBox1.Text.ToString());
DataRow Row = Rows[0];

Понимаю что это решение через "одно место"... Но в силу давления сроков пришлось решить первым пришедшим в голову способом.
В следующий раз обязательно постараюсь попробовать вопользоваться данными здесь советами....
...
Рейтинг: 0 / 0
Как получить экземпляр DataRow из отсортированного Grid'a
    #34182004
Фотография CrazyPotato
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воистину решение через ж...! Да здравствует кривой код! :-/ Но за изобретательность +1 балл :-)

Вариант гораздо лучше: к DataGrid привязать не DataTable, а DataView, образованное от этой таблицы. Тогда порядок строк в DataView будет изменяться в соответствии с изменением порядка строк в DataGrid. А следовательно обращение MyDataView[MyDataGrid.CurrentRowIndex] имеет смысл.

На самом деле, даже, когда ты к DataGrid привязываешь DataTable, реально к гриду привязывается стандартное представление (DefaultView) данной таблицы. И ты можешь вычислить текущую запись в таблице, как MyDataTable.DefaultView[MyDataGrid.CurrentRowIndex].Row.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Как получить экземпляр DataRow из отсортированного Grid'a
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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