Перестановка строк в DataGridView
От: Airog Украина  
Дата: 25.04.11 06:38
Оценка:
У меня есть DataGridView его DataSource ссылается на таблицу DataTable, мне нужно осуществить поднятие или опускание строк в DataGridView, т. е. по заказу юзера нужно например строку 2 по ставить вместо 3-й, соответственно 3-я станет 2-й (обмен строк). Пробовал методами RemoveAt и Insert, но эти методы сразу отражаются на DataTable, т. е. RemoveAt удаляет (помечает для удаления) строку в DataTable. Мне же нужно только изменить порядок строк в DataGridView при это это не должно отражаться в DataTable. Для себя я решил данную проблему через сортировку по колонке, т. к. 1-я колонка является порядковым номер, но как быть если нет такого порядкового номера? Через сортировку не хочется, так как изменение нумерации каждой строки сразу приводит к автоматической сортировке, хотя это незаметно и не затармаживает, но все равно это костыльно. Что посоветуете?
Re: Перестановка строк в DataGridView
От: nauro Украина  
Дата: 25.04.11 11:20
Оценка:
Здравствуйте, Airog, Вы писали:

A>У меня есть DataGridView его DataSource ссылается на таблицу DataTable, мне нужно осуществить поднятие или опускание строк в DataGridView, т. е. по заказу юзера нужно например строку 2 по ставить вместо 3-й, соответственно 3-я станет 2-й (обмен строк). Пробовал методами RemoveAt и Insert, но эти методы сразу отражаются на DataTable, т. е. RemoveAt удаляет (помечает для удаления) строку в DataTable. Мне же нужно только изменить порядок строк в DataGridView при это это не должно отражаться в DataTable. Для себя я решил данную проблему через сортировку по колонке, т. к. 1-я колонка является порядковым номер, но как быть если нет такого порядкового номера? Через сортировку не хочется, так как изменение нумерации каждой строки сразу приводит к автоматической сортировке, хотя это незаметно и не затармаживает, но все равно это костыльно. Что посоветуете?


А какой смысл менять строки местами, если вы это состояние не сохраняете? Иди сохраняете? Тогда по какому признаку должен сохраняется порядок? Напрашивается колонка порядка как у вас и есть. Но я не уверен что ее надо использовать для сортировки в DataGridView открыто. Если такой колонки нет, что мешает динамически добавить ее в DataTable.
-----------------------------------------
тут может быть ваша реклама
Re[2]: Перестановка строк в DataGridView
От: Airog Украина  
Дата: 25.04.11 13:37
Оценка:
Здравствуйте, nauro, Вы писали:

N>А какой смысл менять строки местами,


Юзеру может быть нужен какой-то порядок строк, которые в начале ввел в беспорядке

> если вы это состояние не сохраняете? Иди сохраняете?


Сохраняю

>Тогда по какому признаку должен сохраняется порядок? Напрашивается колонка порядка как у вас и есть. Но я не уверен что ее надо использовать для сортировки в >DataGridView открыто. Если такой колонки нет, что мешает динамически добавить ее в DataTable.


У меня есть отдельное поле в котором хранится порядковый номер,и которое видно в DataGridView. На данный момент я его могу менять и DataGridView автоматически сортирует. Но это как-то костыльно и трудозатратно. Сам же DataGridView как-то внутри меняет порядок строк? Только как я не манипулировал с этими внутренностями, так и не смог добиться нужного результата.
Re: Перестановка строк в DataGridView
От: Pavel Dvorkin Россия  
Дата: 25.04.11 15:04
Оценка:
Здравствуйте, Airog, Вы писали:

A>У меня есть DataGridView его DataSource ссылается на таблицу DataTable, мне нужно осуществить поднятие или опускание строк в DataGridView, т. е. по заказу юзера нужно например строку 2 по ставить вместо 3-й, соответственно 3-я станет 2-й (обмен строк). Пробовал методами RemoveAt и Insert, но эти методы сразу отражаются на DataTable, т. е. RemoveAt удаляет (помечает для удаления) строку в DataTable. Мне же нужно только изменить порядок строк в DataGridView при это это не должно отражаться в DataTable. Для себя я решил данную проблему через сортировку по колонке, т. к. 1-я колонка является порядковым номер, но как быть если нет такого порядкового номера? Через сортировку не хочется, так как изменение нумерации каждой строки сразу приводит к автоматической сортировке, хотя это незаметно и не затармаживает, но все равно это костыльно. Что посоветуете?


Можно вообще отказаться от DataSource и заполнить колонки DataGridView вручную. Это совсем не так сложно. После этого DataTable будет сама по себе, DataGridView сам по себе, а где-то еще будет информация, в каком порядке выводить.
With best regards
Pavel Dvorkin
Re[2]: Перестановка строк в DataGridView
От: Airog Украина  
Дата: 25.04.11 15:24
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:


PD>Можно вообще отказаться от DataSource и заполнить колонки DataGridView вручную. Это совсем не так сложно. После этого DataTable будет сама по себе, DataGridView сам по себе, а где-то еще будет информация, в каком порядке выводить.


Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки
Re[3]: Перестановка строк в DataGridView
От: nauro Украина  
Дата: 25.04.11 19:31
Оценка:
Здравствуйте, Airog, Вы писали:

A>У меня есть отдельное поле в котором хранится порядковый номер,и которое видно в DataGridView. На данный момент я его могу менять и DataGridView автоматически сортирует. Но это как-то костыльно и трудозатратно. Сам же DataGridView как-то внутри меняет порядок строк? Только как я не манипулировал с этими внутренностями, так и не смог добиться нужного результата.


Одного не пойму. Допустим Вам удалось поменять строки местами в DataGridView (во внутренностях, как вы выразились). Что это даст в плане сохранения этого состояния? Ведь в таком случае DataTable ничегошеньки о ваших с DataGridView манипуляциях знать не будет.
Что касаеться костыльности и трудозатратности "сортировочного поля", то ничего гипер сложного тут не вижу, когда была нужда, именно так и делал. Помоему Вы тут уж слишком идеалистически смотрите на проблему, ИМХО.
-----------------------------------------
тут может быть ваша реклама
Re[4]: Перестановка строк в DataGridView
От: Airog Украина  
Дата: 25.04.11 19:44
Оценка:
Здравствуйте, nauro, Вы писали:

N>Одного не пойму. Допустим Вам удалось поменять строки местами в DataGridView (во внутренностях, как вы выразились). Что это даст в плане сохранения этого состояния? Ведь в таком случае DataTable ничегошеньки о ваших с DataGridView манипуляциях знать не будет.

N>Что касаеться костыльности и трудозатратности "сортировочного поля", то ничего гипер сложного тут не вижу, когда была нужда, именно так и делал. Помоему Вы тут уж слишком идеалистически смотрите на проблему, ИМХО.

Я просто думал что есть способ проще, но видать придется оставить реализацию через сортировочное поле
Re[3]: Перестановка строк в DataGridView
От: Pavel Dvorkin Россия  
Дата: 26.04.11 02:22
Оценка: +1
Здравствуйте, Airog, Вы писали:

A>Здравствуйте, Pavel Dvorkin, Вы писали:



PD>>Можно вообще отказаться от DataSource и заполнить колонки DataGridView вручную. Это совсем не так сложно. После этого DataTable будет сама по себе, DataGridView сам по себе, а где-то еще будет информация, в каком порядке выводить.


A>Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки


Тогда я не понимаю. С одной стороны, есть желание синхронизировать DataTable и DataGridView. С другой стороны, есть желание, чтобы при перестановке строк в DataGridView DataTable не изменялся. ИМХО эти пожелания друг другу противоречат.
With best regards
Pavel Dvorkin
Re[4]: Перестановка строк в DataGridView
От: Airog Украина  
Дата: 26.04.11 05:23
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

A>>Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки


PD>Тогда я не понимаю. С одной стороны, есть желание синхронизировать DataTable и DataGridView. С другой стороны, есть желание, чтобы при перестановке строк в DataGridView DataTable не изменялся. ИМХО эти пожелания друг другу противоречат.


Абсолютно нет, мне нужно чтобы строки в DataTable не удалялись или вставлялись при перестановке, и удалялись или вставлялись только, если об этом сказано, а данные пусть изменяются.
Re[5]: Перестановка строк в DataGridView
От: Pavel Dvorkin Россия  
Дата: 26.04.11 06:51
Оценка:
Здравствуйте, Airog, Вы писали:

A>Здравствуйте, Pavel Dvorkin, Вы писали:


A>>>Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки


PD>>Тогда я не понимаю. С одной стороны, есть желание синхронизировать DataTable и DataGridView. С другой стороны, есть желание, чтобы при перестановке строк в DataGridView DataTable не изменялся. ИМХО эти пожелания друг другу противоречат.


A>Абсолютно нет, мне нужно чтобы строки в DataTable не удалялись или вставлялись при перестановке, и удалялись или вставлялись только, если об этом сказано, а данные пусть изменяются.


Все равно не понимаю.

Есть DataTable 2*2
Есть DataGridView, его отображение.
Есть кнопка "Вверх". Она поднимает в DataGridView 1-ю строку, делая ее 0-й, а 0-ю, наоборот, опускает.

Что должно быть в DataTable ? Строки поменялись местами или нет ?
With best regards
Pavel Dvorkin
Re[6]: Перестановка строк в DataGridView
От: Airog Украина  
Дата: 26.04.11 07:14
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Все равно не понимаю.


PD>Есть DataTable 2*2

PD>Есть DataGridView, его отображение.
PD>Есть кнопка "Вверх". Она поднимает в DataGridView 1-ю строку, делая ее 0-й, а 0-ю, наоборот, опускает.

PD>Что должно быть в DataTable ? Строки поменялись местами или нет ?


В DataTable строки остались на месте, изменилось только поле в котором хранится порядок строк. Именно по этому полю и происходит сортировка в моей текущей реализации.
В DaraGridView строки отображаются через CurrencyManager именно в нем определяется порядок строк через список List. Мои попытки поменять местами строки в этом списке приводят к удалению или вставке в DataTable. Сама же платформа Net каким-то образом создает этот список без затрагивания DataTable, мне интересно как?
Re[7]: Перестановка строк в DataGridView
От: Pavel Dvorkin Россия  
Дата: 26.04.11 07:22
Оценка:
Здравствуйте, Airog, Вы писали:

A>В DataTable строки остались на месте, изменилось только поле в котором хранится порядок строк. Именно по этому полю и происходит сортировка в моей текущей реализации.

A>В DaraGridView строки отображаются через CurrencyManager именно в нем определяется порядок строк через список List. Мои попытки поменять местами строки в этом списке приводят к удалению или вставке в DataTable. Сама же платформа Net каким-то образом создает этот список без затрагивания DataTable, мне интересно как?

Этого я не знаю, поскольку с CurrencyManager не имел дела.
With best regards
Pavel Dvorkin
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.