|
|
|
Как получить экземпляр DataRow из отсортированного Grid'a
|
|||
|---|---|---|---|
|
#18+
Подскажите, 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 таблицы, независимо от сортировки???? Каждая сложная вещь есть совокупность простых вещей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2005, 20:51 |
|
||
|
Как получить экземпляр DataRow из отсортированного Grid'a
|
|||
|---|---|---|---|
|
#18+
CurrencyManager crm = (CurrencyManager)this.BindingContext[this.dataGrid1.DataSource, this.dataGrid1.DataMember]; DataView dv = (DataView) crm.List; DataRow row = dv[crm.Position].Row; Это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 01:53 |
|
||
|
Как получить экземпляр DataRow из отсортированного Grid'a
|
|||
|---|---|---|---|
|
#18+
Проблема в том, что есть некий DataView по умолчанию, который и реализует сортировку. Попробуй в DataSource пихать не DataTable а DataView. А строку брать из этого DataView ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 03:47 |
|
||
|
Как получить экземпляр DataRow из отсортированного Grid'a
|
|||
|---|---|---|---|
|
#18+
сматри DefaultView, щас МСДНа под рукой нет и напишу на память, будет помоему так : Table1.DefaultView[Grid1.CurrentRowIndex]; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 06:07 |
|
||
|
Как получить экземпляр DataRow из отсортированного Grid'a
|
|||
|---|---|---|---|
|
#18+
Всем спасибо... Проблему решил, правда не очень "красиво".... Добавил TextBox TextBox1 на форму, который связал с первичным ключом (его имя ID) таблицы Table1. Текущую строку получаю так: DataRows[] Rows = Table1.Rows.Select("ID = " + TextBox1.Text.ToString()); DataRow Row = Rows[0]; Понимаю что это решение через "одно место"... Но в силу давления сроков пришлось решить первым пришедшим в голову способом. В следующий раз обязательно постараюсь попробовать вопользоваться данными здесь советами.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.12.2005, 15:42 |
|
||
|
Как получить экземпляр DataRow из отсортированного Grid'a
|
|||
|---|---|---|---|
|
#18+
Воистину решение через ж...! Да здравствует кривой код! :-/ Но за изобретательность +1 балл :-) Вариант гораздо лучше: к DataGrid привязать не DataTable, а DataView, образованное от этой таблицы. Тогда порядок строк в DataView будет изменяться в соответствии с изменением порядка строк в DataGrid. А следовательно обращение MyDataView[MyDataGrid.CurrentRowIndex] имеет смысл. На самом деле, даже, когда ты к DataGrid привязываешь DataTable, реально к гриду привязывается стандартное представление (DefaultView) данной таблицы. И ты можешь вычислить текущую запись в таблице, как MyDataTable.DefaultView[MyDataGrid.CurrentRowIndex].Row. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2006, 07:26 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=33439596&tid=1353034]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
148ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 484ms |

| 0 / 0 |
