Есть таблица базы данных. (MS Access)
На основе таблицы формируется дерево.
поле ID
- автоинкремент (формируется из базы данных).
Сценарий:
1. Пользователь. Выбирает узел для копирования;
2. Пользователь. Выбирает узел, куда копировать;
3. Программа. Получает строку узла для копирования;
4. Программа. Копирует строку «2 1 0 AA Node Level_2» и связанные строки как дочерние линии (узлы) в узел «16 13 2 CC Node Level_2», который указан как «получатель»;
5. Программа. Обновляет таблицу базы данных на основе изменений в DataTable.
Вопрос.
Как программно «скопировать» и «вставить» для конкретной записи таблицы (DataTable) и ее дочерних узлов (строк) с любой вложенностью узлов?
Вопрос означает, как выполнить пункт 3, пункт 4?
В результате в исходной таблице должны появиться дополнительные записи.
ID // PrID // сортировка // NodeName // field_1 // field_2 // field_3
18 16 0 Узел AA Level_2
19 18 0 Узел AAA Level_3
20 19 0 AAAA Node Level_4
21 19 1 Узел AAAB Level_4
23 19 2 Узел AAAC 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 // сортировка // NodeName // field_1 // field_2 // field_3
1 0 0 A Узел Level_1_изм_2
2 1 0 Узел AA Level_2
3 2 0 Узел AAA Level_3
4 3 0 Узел AAAA Level_4
5 3 1 Узел AAAB Level_4
6 3 2 Узел AAAC Level_4_Изм_3
7 1 1 AB Узел Level_2
8 1 2 AC Node Level_2
9 0 1 B Узел Уровень_1
10 9 0 BA Node Level_2
11 9 1 BB Узел Level_2
12 9 2 г. до н.э. Узел Уровень_2
13 0 2 C Узел Уровень_1
14 13 0 CA Node Level_2
15 13 1 CB Узел Level_2
16 13 2 CC Node Level_2
17 13 3 CD Node Level_2