|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Здравствуйте, У меня есть datagridview, привязанный к таблице. Пользователи могут изменять значения в двух столбцах этого datagridview и сохранять по кнопке SvBtn. Программно по клику мышки по строке меняется цвет ячеек этой строки на жёлтый (BackColor и SelectionBackColor), кроме ячеек столбцов с редактируемыми значениями. Нужно по кнопке SvBtn сохранять в таблицу значения ячеек только тех строк, которые выделены цветом. Т.е. цвет редактрируемых ячеек не меняется, но меняется цвет остальных ячеек в строке и нужно только эти строки сохранять. Как это сделать? Я пока сохраняю так: Код: c# 1. 2. 3. 4. 5.
Но при этом сохраняется всё. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 17:28 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Andemki, Пока могу сказать только что this.TotalDataTableAdapter.Fill(this.MyDataSet.TotalData, param1, param2, text, type); лишнее ... |
|||
:
Нравится:
Не нравится:
|
|||
23.10.2012, 22:10 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Cat2, Да, согласен. Может быть находить подсвеченные строки в гриде и обновлять соответствующие строки в таблице с помощью TableAdapter.Update(DataRow)? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 15:02 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
AndemkiCat2, Да, согласен. Может быть находить подсвеченные строки в гриде и обновлять соответствующие строки в таблице с помощью TableAdapter.Update(DataRow)?Ну дык тогда надо отвязаться от таблицы, чтоб Binding не изменял записи, а изменяли Вы. Что-то там у Вас с кодом много всего, а зачем после Update делать Fill ???? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 15:23 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
fortibransa, Да думал что надо делать перезагрузку TableAdapter после апдейта. Написал пока вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Работает только для первой строки в гриде и почему-то не обновляется TableAdapter ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 15:54 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Andemki, Грид стал обновляться после того, как начал делать перезагрузку TableAdapter :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 15:56 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Вообщем вот это мне и надо, но только чтобы работало для всех строк, а не только для первой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 15:58 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Вот так всё заработало: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 16:26 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Жуткий говнокод. А главное зачем? Насколько я помню при редактирование изменяется DataRow.RowState и адаптер выполняет UpdateCommand только для тех строк, у которых RowState == DataRowState.Modified. Для тех, у которых RowState == DataRowState.Add выполняется InsertCommand; для тех, у которых RowState == DataRowState.Deleted - DeleteCommand. Почитали бы документацию :) P.S.: в будущем проверяйте состояние данных, а не контролов, их отображающих. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 16:56 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
skyANA, А как это к цвету можно привязать? Мне нужно, чтобы UpdateCommand выполнялась только для тех строк, у которых цвет жёлтый, а не только при изменении значения ячейки в строке. Жуткий говнокод возможен, т.к. только начинаю с этим работать :) Вот мне и интересно как это правильней реализовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 17:41 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Andemki, skyANA правильно сказал, работайте с данными а не с представлением. Что до задачи, подкрашивание то да сё, да меняем цвет, да по цвету определяем, вам не кажется что это на педерастию смахивает, надо взрослеть в строну иксовых shello, вот и 2112 по это заточили а? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 18:35 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Где-то в степи, Ну вот такая если задача - сохранять значения только в жёлтых строках. Если можно это сделать не обращаясь к цвету, то приведите пример пожалуйста грамотного кода! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 19:14 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Andemki, Я дальтоник,для меня нет желтого цвета, отсюда и то что вы написали гумно.. делайте метку на обновлении в данных, а не в представлении. а потом как сказал skyANA и в перед. зы примеры с DS, да я вырос из него, уже много лет с ним не работаю.. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 19:33 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Где-то в степи, А это вообще возможно, если у меня в гриде есть строки белого, серого, коричневого и жёлтого цвета и мне надо менять данные только в жёлтых строках, а во всех остальных не менять? Т.е. если ввели значение в серую строку, то Update в таблице не проводим. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 19:59 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Ну вот так ещё можно загавнокодить, уже без цвета: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 20:15 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Так уж сложилось, что в программировании можно все. Можно сделать редактирование голосом - но как быть глухонемым, можно по цвету - но как быть дальтоникам, можно вытащить на грид 500 записей и люди с плохим зрением замаются крутить перемотку, или шарить лупой по экрану. не проще ли добавь залипающую кнопку, которая выводила бы на грид строки разрешенные для редактирования и все.... Тут вопрос не в коде,( накодить можно все) а в самой архитектуре юайя ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 20:24 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Где-то в степи, Ну тут ещё вопрос в требованиях к этому UI. А в требованиях как раз нужно сделать редактирование по жёлтому цвету. Это не я придумал :) Т.е. как дальтоники будут с этой программой работать - это вопрос к тому, кто придумал такие требования. Тут пользователи сами выделяют по клику мышки жёлтым цветом те строки, которые нужно редактировать и только их нужно сохранять. Идею с кнопкой можно конечно предложить. Если я правильно понял, то она будет фильтровать строки в гриде и отображать только те, которые можно редактировать? Но их сперва всё равно нужно ведь как-то выбрать :) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.10.2012, 20:34 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Методов реализации сего море, в основном будут говнокодерские (а как это еще называть). Понимаешь грид это такой контрол который отображает некий массив данных, если не привязывать к неким данным грид (тупо грид.Rows.Add(ля, ля, гы) или у источника данных нету способа обновления своих данных от грида (тупо ну не знает источник что его данные поменялись) то тот массив данных не будет менятся от грида и ты можешь менять его сам как тебе вздумается, а если источник данных "знает" что его данные меняются от грида, тогда надо другой говнокод, (ну например, бегаешь по строчкам грида которые строчки не надо менять в источнике данных то им делаешь AcceptChanges (блин, тогда на гриде эти данные будут такими каким их сделал user а в источнике данных такие какие и были) или RejectChanges (тогда нахрен назад изменения которые user делал) , а которым надо менять то ничего не делаешь, ну и потом Update). Тока нахрена Fill, записал и снова прочитал??? Это надо только если например поле AutoIncrement и то в стандартном подходе в UpdateCommand там за UPDATE ила-ила, через точку с запятой идет сразу SELECT бла-бла. Твою мать, накарякал, короче надо книжки читать и экспериментировать. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 08:01 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
fortibransa, Единственный плюс в вашем коде - ему обфускатор не требуется.. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 09:37 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
AndemkiГде-то в степи, А это вообще возможно, если у меня в гриде есть строки белого, серого, коричневого и жёлтого цвета и мне надо менять данные только в жёлтых строках, а во всех остальных не менять? Т.е. если ввели значение в серую строку, то Update в таблице не проводим.Я перестал понимать, какая стоит задача в реальности :) В реальности есть строки разного цвета? По какому принципу определяется цвет? Или же пользователь может редактировать любые строки, но потом выделить среди них нужные, нажать "Сохранить". Приложение должно отменить изменения в тех строках, что не выделены, но отредактированы, и сохранить выделенные. И поэтому у Вас Fill после Update, чтобы визуально отменить редактирование не выделенных строк. Так? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 12:31 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
skyANA, Тут печалька (((.. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 13:21 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
skyANA, Да, в гриде строки разного цвета. Цвет определяется исходя из того какой столбец был изменён пользователем когда-либо (это можно узнать из специального столбца в DataTable). И отдельно есть условие на выделение жёлтым цветом - если пользователь нажал на ячейку, то вся строка выделяется жёлтым цветом, если ещё раз нажмёт, то цвет строки меняется на изначальный, какой был при загрузки. Да, пользователь может редактировать любые строки, но сохранятся должны именно жёлтые. Всё верно - приложение должно отменить изменения в тех строках, что не жёлтые. Fill после Update ещё потому, что нужно получить изменения в остальных столбцах грида. Т.е. я ввожу какие-то новые значения, жму "Сохранить" и по этим данным меняются значения в остальных столбцах грида. Если не указать Fill, то пользователь изменения в остальных столбцах грида не увидит после нажатия кнопки "Сохранить". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 17:34 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Всё-таки реализовал это с помощью списка selectedRowIndexes, который я указал в последнем примере кода. Если кому интересно, то могу показать, что у меня добавляется в список и как это работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 17:35 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
fortibransa, У меня грид привязан к таблице и изменения значений в гриде сохраняются в таблице. Fill после Update для того, чтобы сделать перезагрузку данных в гриде, чтобы пользователь увидел изменения не только в тех столбцах, где он чего-то поменял, но и в остальных столбцах этого грида, которые автоматически поменялись после Update. В любом случае нужно делать проверку, в каких строках сохранять изменения, а в каких нет. Не совсем понятно почему лучше бегать по строкам и использовать AcceptChanges или RejectChanges. Это лучше, чем бегать по строкам и проверять выбрана ли строка или нет? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.10.2012, 17:50 |
|
Сохранение значений в ячейках, выделенных цветом в DataGridView (C#)
|
|||
---|---|---|---|
#18+
Да блин, если тебе не надо сохранять строку ей надо или Accept или Reject, сделать чтоб Update ее не загробастал. Ты в debag посмотри какие состояния строк, не которые не Unchanged они и пойдут обрабатывается Update, если "руками" сделаешь Accept или Reject то они станут Unchanged. По Fill, если у тебя типизированный DataSet, короче если не сам городил все эти Command ы а студия сделала, то в InsertCommand и UpdateCommand ну например Код: sql 1. 2.
Код: sql 1. 2.
это сама студия городит, и сразу обновятся чо там надо и не надо Fill ... |
|||
:
Нравится:
Не нравится:
|
|||
26.10.2012, 08:02 |
|
|
start [/forum/topic.php?fid=20&msg=38012141&tid=1405750]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 332ms |
total: | 462ms |
0 / 0 |