treeView DragDrop SQL
#38044531
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
|
|
|
Код ниж работает и перемещение то же. Как правильно и в какую часть кода вставить запрос на апдейт при перемещении
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135.
namespace Person
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
PopulateTreeView();
}
void PopulateTreeView()
{
SqlConnection conn = new SqlConnection(@"Data Source=sqlppo;Initial Catalog=Person;Persist Security Info=True;User ID=sa;Password=");
SqlCommand sqlQuery = new SqlCommand("select uprav, id_upr from dbo.department where rvdk_num='00'", conn);
DataTable resultSet = new DataTable();
DataTable product_table = new DataTable();
conn.Open();
SqlDataReader reader = sqlQuery.ExecuteReader();
TreeNode[] children;
TreeNode nodechild;
TreeNode NewNode;
int i = 0;
resultSet.Load(reader);
if (resultSet.Rows.Count > 0)
{
foreach (DataRow row in resultSet.Rows)
{
SqlParameter param = new SqlParameter("id_upr", row[1].ToString());
sqlQuery = new SqlCommand("select fio from personnel where id_upr = @id_upr", conn);
sqlQuery.Parameters.Add(param);
reader = sqlQuery.ExecuteReader();
product_table.Load(reader);
children = new TreeNode[product_table.Rows.Count];
foreach (DataRow prod_row in product_table.Rows)
{
nodechild = new TreeNode("uprav");
nodechild.Text = prod_row[0].ToString();
children[i] = nodechild;
i++;
}
NewNode = new TreeNode(row[0].ToString(), children);
NewNode.Name = "fio";
treeView1.Nodes.Add(NewNode);
reader.Close();
i = 0;
product_table.Rows.Clear();
}
}
conn.Close();
}
private TreeNode GetHoveringNode(int screen_x, int screen_y)
{
Point pt = treeView1.PointToClient(new Point(screen_x, screen_y));
TreeViewHitTestInfo hitInfo = treeView1.HitTest(pt);
return hitInfo.Node;
}
private void treeView1_ItemDrag(object sender, ItemDragEventArgs e)
{
treeView1.DoDragDrop(e.Item, DragDropEffects.All);
}
private void treeView1_DragOver(object sender, DragEventArgs e)
{
TreeNode hoveringNode = GetHoveringNode(e.X, e.Y);
TreeNode draggingNode = e.Data.GetData(typeof(TreeNode)) as TreeNode;
if (hoveringNode != null && hoveringNode != draggingNode && draggingNode != hoveringNode.Parent)
{
e.Effect = DragDropEffects.Move;
hoveringNode.TreeView.SelectedNode = hoveringNode;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void treeView1_DragDrop(object sender, DragEventArgs e)
{
if (e.Effect == DragDropEffects.Move)
{
TreeNode hoveringNode = GetHoveringNode(e.X, e.Y);
if (hoveringNode != null)
{
TreeNode draggingNode = e.Data.GetData(typeof(TreeNode)) as TreeNode;
if (draggingNode != null)
{
if (draggingNode.Level == hoveringNode.Level)
{
if (draggingNode.Level != 0)
{
draggingNode.Remove();
hoveringNode.Parent.Nodes.Insert(hoveringNode.Index + 1, draggingNode);
}
if (draggingNode.Level == 0)
{
draggingNode.Remove();
treeView1.Nodes.Insert(hoveringNode.Index + 1, draggingNode);
}
}
if (draggingNode.Level > hoveringNode.Level)
{
draggingNode.Remove();
hoveringNode.Nodes.Insert(0, draggingNode);
}
}
}
}
}
}
}
|
|