61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
|
|||||||||||
1 | |||||||||||
Нужно добавить новую строку04.04.2011, 09:33. Показов 8831. Ответов 12
Метки нет (Все метки)
Есть DataSet, в котором DataTable c первичным ключом. Он связан с DataGridView через BindingSource.
Итак, мне нужно в этот DataTable добавить копию одной из имеющихся в ней строк. Я создаю переменную:
Я уж пыталась вместо +1 делать +100 - то же самое. +1000 - то же самое!
0
|
04.04.2011, 09:33 | |
Ответы с готовыми решениями:
12
Нужно программным способом добавить в таблицу базы новую строку Добавить новую строку в таблицу Нужно ввести текст, если он больше 80 символов нужно чтоб он переходил на новую строку Добавить новую строку в DataGridView |
04.04.2011, 10:00 | 2 |
Wild Wolf, если столбец ID автоинкрементный, то значения в него добавлять не нужно,оно само добавится. Также в столбцах такого типа нельзя заполнить значение, даже при его отсутсвии, т.е. если на данный момент в таблице значения 1,3,11,27 то значения 2,5,6 и т.д. уже использовались и их повторное использование невозможно несмотря на то, что в данный момент они не существуют. Следующе возможное значение - 28
1
|
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
|
|
04.04.2011, 10:47 [ТС] | 3 |
Да, столбец автоинкрементный. Но хоть я и не изменяю значение значение ID, хоть изменяю его - то же самое: нарушена уникальность. Null попробовать туда подставить?
Добавлено через 2 минуты DBNull.Value не подходит: "В столбце "ID" не допускаются пустые значения." Автоинкрементность сейчас уберу.
0
|
04.04.2011, 10:52 | 4 |
Wild Wolf, если столбец автоинкрементный, то значение можно добавлять любое, а в столбец автоматически подставится нужное значение. Перегрузи комп, может глюк исчезнет. И покажи запрос на вставку значений
1
|
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
|
||||||
04.04.2011, 11:17 [ТС] | 5 | |||||
А, нет. Мне нельзя автоинкремент убирать - а то придется при добавлении новых строк вычислять, какой же ID вставить следующий.
Добавлено через 18 минут Глюк не исчез. А запрос на вставку строки -
Я что думаю, может, я вставляю строку, которая уже имеется в наборе DataTable? Типа не клон строки делаю, а ту же самую пытаюсь вставить. Хотя, тогда он должен, по идее, не на уникальность ругаться, а на то, что эта строка уже принадлежит таблице.
0
|
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
|
|||||||||||
04.04.2011, 11:34 [ТС] | 7 | ||||||||||
Там процедура довольно запутанная.. тем более, в базу я не передаю параметр ID, так как там сделано через последовательность, которая автоматом ставит уникальный ID при вставке новой строки.
Проблема в том, что строка не в базу не вставляется, а в локальный DataTable. Я потом из локального DataTable беру измененные строки (GetChanges) и выполняю процедуру на вставку. Он на уникальность ругается, и не вставляет строку локально. Я только что попробовала вместо
0
|
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
|
|
05.04.2011, 07:24 [ТС] | 9 |
Нет, потому что слишком длинно писать надо будет. У меня помимо тех полей, что отображаются в гриде, еще и скрытые есть, которые пользователь не видит, но значения их тоже надо копировать в будущую строку.
0
|
181 / 107 / 13
Регистрация: 22.03.2010
Сообщений: 456
|
||||||
05.04.2011, 11:26 | 10 | |||||
Используйте типизированные объекты Дататейбл.
Например так:
1
|
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
|
|||||||||||
05.04.2011, 12:01 [ТС] | 11 | ||||||||||
Но у меня пишет по этому поводу: "Эта строка уже принадлежит данной таблице."
Правда, я немножко не так использую. Мне нужно выбрать из данной таблицы строку ID которой равен, допустим, 5. Поэтому у меня получается как то так:
Даже когда делаю как вы предлагаете:
0
|
181 / 107 / 13
Регистрация: 22.03.2010
Сообщений: 456
|
|
05.04.2011, 13:46 | 12 |
Так будет ругаться, так как в dr сидит индекс.
Если используешь второй вариант параметров данной функции, то будет работать. Правда тебе облом перечислять все 100 параметров. Можно подумать об автоматизации этого процесса. Добавлено через 10 минут Это не свойство, а название столбца в ДатаТейбл (для примера), т.е. таблица состоит из столбцов id, Name.
0
|
61 / 61 / 11
Регистрация: 30.06.2010
Сообщений: 260
|
||||||
05.04.2011, 14:23 [ТС] | 13 | |||||
Да, названия столбцов там были.
Но я уже решила проблему тем, что создаю копию DataTable, в которую помещаю эту строку, изменяю там ID и из нее уже вставляю в нужный DataTable.
1
|
05.04.2011, 14:23 | |
05.04.2011, 14:23 | |
Помогаю со студенческими работами здесь
13
Добавить новую строку после симовлов Как в ComboBox добавить новую строку? Как добавить перевод на новую строку? Как добавить новую строку в CString? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |