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

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