Имеется таблица базы данных.
На основании таблицы формируется дерево.
Поле ID
автоинкремент (формируется базой данных).
Сценарий:
DataTable
и связанные с ней строки в качестве дочерних строк (узлов) в узел, который указан как "получатель";DataTable
.Вопрос.
Как выполнить программно "копировать" и "вставить" для определённой записи таблицы(DataTable
) и её дочерних узлов(строк) и чтобы копирование применялось для узлов различной степени вложенности?
В вопросе имеется ввиду как выполнить п.3, п.4.
Результат копирования должен привести к тому,
что в DataTable появятся дополнительные строки:
ID // PrID // sorting // NodeName // field_1 // field_2 // field_3
18 16 0 AA Node Level_2
19 18 0 AAA Node Level_3
20 19 0 AAAA Node Level_4
21 19 1 AAAB Node Level_4
23 19 2 AAAC Node Level_4_Изм_3
Код подключения
public void connect()
{
string catBD = @"c:\test\visualStudio\csharp\01\01.accdb";
string conBD = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}", catBD);
OleDbConnection connection = new OleDbConnection(conBD);
connection.Open();
string query1 = "SELECT * FROM TableTreeView_12_0";
OleDbCommand cmd1 = new OleDbCommand(query1, connection);
dt = new DataTable();
adapter = new OleDbDataAdapter(cmd1);
cb = new OleDbCommandBuilder(adapter);
adapter.Fill(dt);
}
Исходная таблица
ID // PrID // sorting // NodeName // field_1 // field_2 // field_3
1 0 0 A Node Level_1_изм_2
2 1 0 AA Node Level_2
3 2 0 AAA Node Level_3
4 3 0 AAAA Node Level_4
5 3 1 AAAB Node Level_4
6 3 2 AAAC Node Level_4_Изм_3
7 1 1 AB Node Level_2
8 1 2 AC Node Level_2
9 0 1 B Node Level_1
10 9 0 BA Node Level_2
11 9 1 BB Node Level_2
12 9 2 BC Node Level_2
13 0 2 C Node Level_1
14 13 0 CA Node Level_2
15 13 1 CB Node Level_2
16 13 2 CC Node Level_2
17 13 3 CD Node Level_2
Вам надо у копируемой строки изменить "Pr ID" с 1 на 16. Ну это если говорить про ваш пример. В общем случае изменить у копируемой строки атрибут "Pr ID" на значение атрибута первичного ключа (атрибут ID) строки в которую вы копируете. После этого вызвать сохранение данных.
static void CopyNode(DataRow selecttedRow, DataRow targetRow)
{
selecttedRow["Pr ID"] = targetRow["ID"];
}
Ну и вызываете сохранение данных из адаптера в базу.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
использую CostaRico/yii2-images для вывода изображение записи из бд, но метод getUrl создает странную ссылку в итоге ссылка не существует в чем может быть...
Пробую отправить запрос на ip нужного сайта через curlВначале отправил через постман такой запрос:
Страницы моего сайта без xdebug грузятя за несколько миллисекунд, а с xdebug за 5 секунд - минимумА бывает и дольше
Как сделать к примеру ID 600000 при добавлении новой строчки? Чтоб был рандом например 6000023 следущий 6000073 и так далее