方法“ TreeList.MoveNode”不传输节点吗?

时间:2018-11-13 07:30:33

标签: c# devexpress

数据源-MS Access数据库;

场景。
-形式为“ Frm6UC”。用户选择要转移的节点;
-形式为“ Frm6UC”。用户单击“ button1”;
-形式为“ searchNodefrm”。用户选择要移动的位置;
   -形式为“ searchNodefrm”。用户单击“ button2”(选择);
   -结果。见图片。

问题。
 如何使“ TreeList.MoveNode”方法起作用?

图纸
Node selection

result

enter image description here 代码“主要表格”

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;
    }
}

0 个答案:

没有答案