Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

116 строки
4.1 KiB

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Drawing;
  5. using System.Data;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. namespace StuMgmClient
  9. {
  10. public partial class StudentTree : UserControl
  11. {
  12. public StudentTree()
  13. {
  14. InitializeComponent();
  15. }
  16. //个人信息
  17. private DataSet ds = null;
  18. public DataSet Ds
  19. {
  20. get { return ds; }
  21. set { ds = value; }
  22. }
  23. //节点table
  24. DataTable table = null;
  25. //dataRows转化成的table
  26. DataTable tableClone = null;
  27. Data da = new Data();
  28. private void StudentTree_Load(object sender, EventArgs e)
  29. {
  30. dgvStudent.Visible = false;
  31. BindRoot();
  32. //da.GetNodesDic(table);
  33. }
  34. //添加父节点的方法
  35. private void BindRoot()
  36. {
  37. //ClientMysql cm = new ClientMysql();
  38. // DataSet ds = cm.SelectNode();
  39. table = Ds.Tables["course_info"];
  40. //把父节点的数据帅选出来
  41. DataRow[] rows = table.Select("pid=0");//取根
  42. foreach (DataRow dRow in rows)
  43. {
  44. TreeNode rootNode = new TreeNode();
  45. rootNode.Tag = dRow;
  46. rootNode.Text = dRow["name"].ToString();
  47. //把此节点放入树中
  48. StudenTree.Nodes.Add(rootNode);
  49. //绑定子节点
  50. BindChildAreas(rootNode);//调用添加子节点的方法
  51. }
  52. }
  53. //添加子节点的方法、递归绑定子区域
  54. private void BindChildAreas(TreeNode fNode)
  55. {
  56. DataRow dr = (DataRow)fNode.Tag;//父节点数据关联的数据行
  57. int fAreaId = Convert.ToInt32(dr["id"]); //父节点ID
  58. DataRow[] rows1 = table.Select("pid =" + fAreaId);//子区域
  59. if (rows1.Length == 0) //递归终止,区域不包含子区域时
  60. {
  61. return;
  62. }
  63. foreach (DataRow dRow in rows1)
  64. {
  65. TreeNode node = new TreeNode();
  66. node.Tag = dRow;
  67. node.Text = dRow["name"].ToString();
  68. //添加子节点
  69. fNode.Nodes.Add(node);
  70. }
  71. }
  72. //子节点单击显示内容
  73. private void StudentTree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
  74. {
  75. if (e.Button == System.Windows.Forms.MouseButtons.Left) //单击鼠标左键才响应
  76. {
  77. if (e.Node.Level == 1) //判断子节点才响应
  78. {
  79. dgvStudent.Visible = true;
  80. DataRow dr = (DataRow)e.Node.Tag;
  81. int fAreaId = Convert.ToInt32(dr["id"]); //子节点ID
  82. DataRow[] drows = table.Select("pid =" + fAreaId);//取根
  83. tableClone = table.Clone();//克隆表结构
  84. foreach (DataRow drr in drows)
  85. {
  86. tableClone.ImportRow(drr);
  87. }
  88. dgvStudent.AutoGenerateColumns = false;
  89. dgvStudent.AllowUserToAddRows = false;
  90. dgvStudent.DataSource = tableClone;
  91. }
  92. }
  93. }
  94. //我的任务_查看按钮方法
  95. private void DgvStudent_CellContentClick(object sender, DataGridViewCellEventArgs e)
  96. {
  97. if (e.ColumnIndex == 1 && e.RowIndex != -1)
  98. {
  99. //Dictionary<int, int> stateDic = da.StateParsing(table);
  100. Dictionary<int, int> stateDic = da.GetNodesDic(table);
  101. // string s=da.DicParsing(stateDic);
  102. DataRow drViews = tableClone.Rows[e.RowIndex];
  103. int state = stateDic[Convert.ToInt32((drViews["id"]))];
  104. SelectFrom sf = new SelectFrom(drViews, state);
  105. //string test = da.DicParsing(stateDic);
  106. sf.ShowDialog();
  107. // ShowData();
  108. }
  109. }
  110. }
  111. }