数据源-MS Access数据库;
场景。
-形式为“ Frm6UC”。用户选择要转移的节点;
-形式为“ Frm6UC”。用户单击“ button1”;
-形式为“ searchNodefrm”。用户选择要移动的位置;
-形式为“ searchNodefrm”。用户单击“ button2”(选择);
-结果。见图片。
问题。
如何使“ TreeList.MoveNode”方法起作用?
public partial class Frm6UC : UserControl
{
DataTable dt;
OleDbDataAdapter adapter;
OleDbCommandBuilder cb;
SettingsAplic settings; // настройки
public Frm6UC()
{
InitializeComponent();
}
private void Frm1UC_Load(object sender, EventArgs e)
{
settings = new SettingsAplic();
connect();
treeList1.BeginSort();
treeList1.Columns[0].SortOrder = SortOrder.Ascending;
treeList1.EndSort();
treeList1.Columns[0].Width = 30;
treeList1.Columns[1].Width = 30;
treeList1.Columns[2].Width = 30;
treeList1.Columns[3].Width = 200;
}
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";
OleDbCommand cmd1 = new OleDbCommand(query1, connection);
dt = new DataTable();
adapter = new OleDbDataAdapter(cmd1);
cb = new OleDbCommandBuilder(adapter);
adapter.Fill(dt);
treeList1.KeyFieldName = "ID";
treeList1.ParentFieldName = "PrID";
treeList1.DataSource = dt;
settings.dt = dt;
}
public void MoveToNode()
{
//** Выбираем место куда требуется перенести узел
// Открываем форму
searchNodefrm searchNdfrm = new searchNodefrm(settings); // запуск формы поиска
searchNdfrm.ShowDialog();
// *** Определяем узел который требуется перенести
TreeListNode curNode; // Текущий узел (который переносится)
curNode = treeList1.FocusedNode;
string curNodeName_isx = curNode.GetValue("NodeName").ToString();
// *** Узел получатель (Родительский узел куда требуется перенести)
TreeListNode recipientNode; // Получатель узла (родительский узел в который переносится). Родительский узел
TreeListNode nodePosition; // Узел где предполагается размещать "переносимый узел". Узел позиции
recipientNode = settings.nodePosition.ParentNode; // Получатель "родительсий узел"
nodePosition = settings.nodePosition; // Узел позиции.
string recipientNode_ = recipientNode.GetValue("NodeName").ToString(); // test
// *** Позиция куда требуется переносить
int position = Convert.ToInt32(nodePosition.GetValue("sorting"));
treeList1.MoveNode(curNode, recipientNode, true, position); // Перемещаем узел
}
private void button1_Click(object sender, EventArgs e)
{
// upMoveNode3();
MoveToNode();
}
}
设置类别
public class SettingsAplic
{
public DataTable dt { get; set; }
public TreeListNode nodePosition { get; set; } // Узел "Позиции"
}
选择要在其中将节点移动到的节点的形式。形式:“ searchNodefrm”。
public partial class searchNodefrm : Form
{
SettingsAplic settingsThis;
public searchNodefrm(SettingsAplic settings)
{
InitializeComponent();
settingsThis = settings;
}
private void searchNodefrm_Load(object sender, EventArgs e)
{
// Привязка к ключевым полям
treeList1.KeyFieldName = "ID";
treeList1.ParentFieldName = "PrID";
treeList1.DataSource = settingsThis.dt;
treeList1.BestFitColumns();
}
// Позиция
private void button2_Click(object sender, EventArgs e)
{
settingsThis.nodePosition = treeList1.FocusedNode;
#region test data
string name = treeList1.FocusedNode.GetValue("NodeName").ToString();
textBox2.Text = name;
#endregion test data
textBox2.BackColor = Color.MediumAquamarine;
}
}