У меня есть DataGridView его DataSource ссылается на таблицу DataTable, мне нужно осуществить поднятие или опускание строк в DataGridView, т. е. по заказу юзера нужно например строку 2 по ставить вместо 3-й, соответственно 3-я станет 2-й (обмен строк). Пробовал методами RemoveAt и Insert, но эти методы сразу отражаются на DataTable, т. е. RemoveAt удаляет (помечает для удаления) строку в DataTable. Мне же нужно только изменить порядок строк в DataGridView при это это не должно отражаться в DataTable. Для себя я решил данную проблему через сортировку по колонке, т. к. 1-я колонка является порядковым номер, но как быть если нет такого порядкового номера? Через сортировку не хочется, так как изменение нумерации каждой строки сразу приводит к автоматической сортировке, хотя это незаметно и не затармаживает, но все равно это костыльно. Что посоветуете?
Здравствуйте, Airog, Вы писали:
A>У меня есть DataGridView его DataSource ссылается на таблицу DataTable, мне нужно осуществить поднятие или опускание строк в DataGridView, т. е. по заказу юзера нужно например строку 2 по ставить вместо 3-й, соответственно 3-я станет 2-й (обмен строк). Пробовал методами RemoveAt и Insert, но эти методы сразу отражаются на DataTable, т. е. RemoveAt удаляет (помечает для удаления) строку в DataTable. Мне же нужно только изменить порядок строк в DataGridView при это это не должно отражаться в DataTable. Для себя я решил данную проблему через сортировку по колонке, т. к. 1-я колонка является порядковым номер, но как быть если нет такого порядкового номера? Через сортировку не хочется, так как изменение нумерации каждой строки сразу приводит к автоматической сортировке, хотя это незаметно и не затармаживает, но все равно это костыльно. Что посоветуете?
А какой смысл менять строки местами, если вы это состояние не сохраняете? Иди сохраняете? Тогда по какому признаку должен сохраняется порядок? Напрашивается колонка порядка как у вас и есть. Но я не уверен что ее надо использовать для сортировки в DataGridView открыто. Если такой колонки нет, что мешает динамически добавить ее в DataTable.
-----------------------------------------
тут может быть ваша реклама
Здравствуйте, nauro, Вы писали:
N>А какой смысл менять строки местами,
Юзеру может быть нужен какой-то порядок строк, которые в начале ввел в беспорядке
> если вы это состояние не сохраняете? Иди сохраняете?
Сохраняю
>Тогда по какому признаку должен сохраняется порядок? Напрашивается колонка порядка как у вас и есть. Но я не уверен что ее надо использовать для сортировки в >DataGridView открыто. Если такой колонки нет, что мешает динамически добавить ее в DataTable.
У меня есть отдельное поле в котором хранится порядковый номер,и которое видно в DataGridView. На данный момент я его могу менять и DataGridView автоматически сортирует. Но это как-то костыльно и трудозатратно. Сам же DataGridView как-то внутри меняет порядок строк? Только как я не манипулировал с этими внутренностями, так и не смог добиться нужного результата.
Здравствуйте, Airog, Вы писали:
A>У меня есть DataGridView его DataSource ссылается на таблицу DataTable, мне нужно осуществить поднятие или опускание строк в DataGridView, т. е. по заказу юзера нужно например строку 2 по ставить вместо 3-й, соответственно 3-я станет 2-й (обмен строк). Пробовал методами RemoveAt и Insert, но эти методы сразу отражаются на DataTable, т. е. RemoveAt удаляет (помечает для удаления) строку в DataTable. Мне же нужно только изменить порядок строк в DataGridView при это это не должно отражаться в DataTable. Для себя я решил данную проблему через сортировку по колонке, т. к. 1-я колонка является порядковым номер, но как быть если нет такого порядкового номера? Через сортировку не хочется, так как изменение нумерации каждой строки сразу приводит к автоматической сортировке, хотя это незаметно и не затармаживает, но все равно это костыльно. Что посоветуете?
Можно вообще отказаться от DataSource и заполнить колонки DataGridView вручную. Это совсем не так сложно. После этого DataTable будет сама по себе, DataGridView сам по себе, а где-то еще будет информация, в каком порядке выводить.
PD>Можно вообще отказаться от DataSource и заполнить колонки DataGridView вручную. Это совсем не так сложно. После этого DataTable будет сама по себе, DataGridView сам по себе, а где-то еще будет информация, в каком порядке выводить.
Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки
Здравствуйте, Airog, Вы писали:
A>У меня есть отдельное поле в котором хранится порядковый номер,и которое видно в DataGridView. На данный момент я его могу менять и DataGridView автоматически сортирует. Но это как-то костыльно и трудозатратно. Сам же DataGridView как-то внутри меняет порядок строк? Только как я не манипулировал с этими внутренностями, так и не смог добиться нужного результата.
Одного не пойму. Допустим Вам удалось поменять строки местами в DataGridView (во внутренностях, как вы выразились). Что это даст в плане сохранения этого состояния? Ведь в таком случае DataTable ничегошеньки о ваших с DataGridView манипуляциях знать не будет.
Что касаеться костыльности и трудозатратности "сортировочного поля", то ничего гипер сложного тут не вижу, когда была нужда, именно так и делал. Помоему Вы тут уж слишком идеалистически смотрите на проблему, ИМХО.
-----------------------------------------
тут может быть ваша реклама
Здравствуйте, nauro, Вы писали:
N>Одного не пойму. Допустим Вам удалось поменять строки местами в DataGridView (во внутренностях, как вы выразились). Что это даст в плане сохранения этого состояния? Ведь в таком случае DataTable ничегошеньки о ваших с DataGridView манипуляциях знать не будет. N>Что касаеться костыльности и трудозатратности "сортировочного поля", то ничего гипер сложного тут не вижу, когда была нужда, именно так и делал. Помоему Вы тут уж слишком идеалистически смотрите на проблему, ИМХО.
Я просто думал что есть способ проще, но видать придется оставить реализацию через сортировочное поле
Здравствуйте, Airog, Вы писали:
A>Здравствуйте, Pavel Dvorkin, Вы писали:
PD>>Можно вообще отказаться от DataSource и заполнить колонки DataGridView вручную. Это совсем не так сложно. После этого DataTable будет сама по себе, DataGridView сам по себе, а где-то еще будет информация, в каком порядке выводить.
A>Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки
Тогда я не понимаю. С одной стороны, есть желание синхронизировать DataTable и DataGridView. С другой стороны, есть желание, чтобы при перестановке строк в DataGridView DataTable не изменялся. ИМХО эти пожелания друг другу противоречат.
Здравствуйте, Pavel Dvorkin, Вы писали:
A>>Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки
PD>Тогда я не понимаю. С одной стороны, есть желание синхронизировать DataTable и DataGridView. С другой стороны, есть желание, чтобы при перестановке строк в DataGridView DataTable не изменялся. ИМХО эти пожелания друг другу противоречат.
Абсолютно нет, мне нужно чтобы строки в DataTable не удалялись или вставлялись при перестановке, и удалялись или вставлялись только, если об этом сказано, а данные пусть изменяются.
Здравствуйте, Airog, Вы писали:
A>Здравствуйте, Pavel Dvorkin, Вы писали:
A>>>Тут сразу возникают проблемы с синхронизацией данных (строк). Ваш способ слишком сложный в плане обратного переброса данных. Данные в DataGridView могут редактироваться, могут добавляться и удаляться строки
PD>>Тогда я не понимаю. С одной стороны, есть желание синхронизировать DataTable и DataGridView. С другой стороны, есть желание, чтобы при перестановке строк в DataGridView DataTable не изменялся. ИМХО эти пожелания друг другу противоречат.
A>Абсолютно нет, мне нужно чтобы строки в DataTable не удалялись или вставлялись при перестановке, и удалялись или вставлялись только, если об этом сказано, а данные пусть изменяются.
Все равно не понимаю.
Есть DataTable 2*2
Есть DataGridView, его отображение.
Есть кнопка "Вверх". Она поднимает в DataGridView 1-ю строку, делая ее 0-й, а 0-ю, наоборот, опускает.
Что должно быть в DataTable ? Строки поменялись местами или нет ?
Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Все равно не понимаю.
PD>Есть DataTable 2*2 PD>Есть DataGridView, его отображение. PD>Есть кнопка "Вверх". Она поднимает в DataGridView 1-ю строку, делая ее 0-й, а 0-ю, наоборот, опускает.
PD>Что должно быть в DataTable ? Строки поменялись местами или нет ?
В DataTable строки остались на месте, изменилось только поле в котором хранится порядок строк. Именно по этому полю и происходит сортировка в моей текущей реализации.
В DaraGridView строки отображаются через CurrencyManager именно в нем определяется порядок строк через список List. Мои попытки поменять местами строки в этом списке приводят к удалению или вставке в DataTable. Сама же платформа Net каким-то образом создает этот список без затрагивания DataTable, мне интересно как?
Здравствуйте, Airog, Вы писали:
A>В DataTable строки остались на месте, изменилось только поле в котором хранится порядок строк. Именно по этому полю и происходит сортировка в моей текущей реализации. A>В DaraGridView строки отображаются через CurrencyManager именно в нем определяется порядок строк через список List. Мои попытки поменять местами строки в этом списке приводят к удалению или вставке в DataTable. Сама же платформа Net каким-то образом создает этот список без затрагивания DataTable, мне интересно как?
Этого я не знаю, поскольку с CurrencyManager не имел дела.