winform中树与数据库绑定后上下移动树节点的问题
数据库是这样建立的:
ID:编号
LayerLever:节点的级别
LayerValue: 节点的实际值(如果是叶节点则是实际值,根节点则是1,2,3..排序不重合即可)
LayerName:节点的名字
parentID:父节点(一级根目录的parentID是root,二级是root-1,三级是root-1-1,依次类推)
hasChild:是否有父节点
初始化树是这样实现的:
DataRow[] selectedRows;
TreeNode tNode, currentNode;
for (int i = 1; i < 128; i++) //设定列表的大循环(1级根节点,2级根节点..)
{
selectedRows = dsLayer.Tables[0].Select( "LayerLevel= " + i.ToString());
if (selectedRows.Length == 0)
{
break;
}
foreach (DataRow dr in selectedRows)
{
tNode = new TreeNode();
if (i == 1)
{
tNode.Name = dr[4].ToString() + "- " + dr[2].ToString();
tNode.Text = dr[3].ToString();
tNode.Tag = dr[0].ToString();
treeView1.Nodes.Add(tNode);
continue;
}
currentNode = treeView1.Nodes.Find(dr[4].ToString(), true)[0];
if (!(bool)dr[ "HasChild "])
{
tNode.Name = dr[2].ToString();
}
else
{
tNode.Name = dr[4].ToString() + "- " + dr[2].ToString();
}
tNode.Text = dr[3].ToString();
tNode.Tag = dr[0].ToString();
currentNode.Nodes.Add(tNode);
}
}
上述代码中,dsLayer为数据库表映射到内存的映射表。dr[0]为ID,dr[2]为LayerValue,dr[3]为LayerName,dr[4]为parentID。现在的情况是增加,删除,修改功能都实现了,都是通过sql语句。现在是上移和下移遇到了问题,根节点的上移和下移不仅要改变ID,而且还要改变parentID的值。大家帮忙看看应该怎么实现啊?或者再在数据库里面加个什么字段啊?