/// <summary> /// 下载同步数据。 /// </summary> /// <param name="teacherID"></param> /// <param name="complete"></param> public void TeaDownSync(string teacherID, EventHandler complete) { lock (this) { this.RaiseChanged("【准备下载同步数据...】"); try { this.RaiseChanged("【开始下载同步数据...】"); this.poxy.BeginDownloadTeaSyncData(teacherID, new AsyncCallback(delegate(IAsyncResult callback) { this.RaiseChanged("【正在下载同步数据,请稍候...】"); Impl.GeneralCallResultOfTeaSyncData result = this.poxy.EndDownloadTeaSyncData(callback); if (result != null) { this.RaiseChanged("【下载同步数据完成,开始分析数据...】"); if (result.ResultCode == 0 && result.Data != null) { this.RaiseChanged("【开始装载数据...】"); TeaSyncData sync = new TeaSyncData(); sync.Time = DateTime.Now; #region 同步学校信息。 Impl.School school = result.Data.School; if (school != null) { sync.School.SchoolID = school.SchoolID; sync.School.SchoolCode = school.SchoolCode; sync.School.SchoolName = school.SchoolName; sync.School.SchoolType = (EnumSchoolType)((int)school.SchoolType); this.RaiseChanged("【已装载学校数据:" + sync.School + "】"); #region 同步教师信息。 Impl.Teacher teacher = school.Teacher; if (teacher != null) { sync.School.Teacher.TeacherID = teacher.TeacherID; sync.School.Teacher.TeacherCode = teacher.TeacherCode; sync.School.Teacher.TeacherName = teacher.TeacherName; #region 同步年级。 Impl.Grade[] grades = teacher.Grades; if (grades != null && grades.Length > 0) { foreach (Impl.Grade grade in grades) { this.RaiseChanged(string.Format("【开始装载年级数据[{0}]..】", grade.GradeName)); Grade g = new Grade(); g.GradeID = grade.GradeID; g.GradeCode = grade.GradeCode; g.GradeName = grade.GradeName; g.OrderNO = grade.OrderNO; #region 客观评价。 Impl.Evaluate evaluate = grade.Evaluate; if (evaluate != null) { this.RaiseChanged(string.Format("【开始装载年级[{0}]下客观评价[{1}]数据..】", grade.GradeName, evaluate.EvaluateName)); g.Evaluate.EvaluateID = evaluate.EvaluateID; g.Evaluate.EvaluateName = evaluate.EvaluateName; g.Evaluate.Type = (EnumEvaluateType)((int)evaluate.Type); g.Evaluate.MinValue = evaluate.MinValue; g.Evaluate.MaxValue = evaluate.MaxValue; Impl.EvaluateItem[] items = evaluate.Items; if (items != null && items.Length > 0) { for (int i = 0; i < items.Length; i++) { EvaluateItem item = new EvaluateItem(); item.ItemID = items[i].ItemID; item.ItemName = items[i].ItemName; item.ItemValue = items[i].ItemValue; g.Evaluate.Items.Add(item); } } } #endregion #region 目录。 Impl.Catalog[] catalogs = grade.Catalogs; if (catalogs != null && catalogs.Length > 0) { for (int i = 0; i < catalogs.Length; i++) { Catalog catalog = new Catalog(); catalog.CatalogID = catalogs[i].CatalogID; catalog.CatalogCode = catalogs[i].CatalogCode; catalog.CatalogName = catalogs[i].CatalogName; catalog.TypeName = catalogs[i].TypeName; catalog.OrderNO = catalogs[i].OrderNO; this.RaiseChanged(string.Format("【开始装载年级[{0}]下科目[{1}]数据..】", grade.GradeName, catalogs[i].CatalogName)); #region 知识要点。 Impl.KnowledgePoint[] points = catalogs[i].Points; if (points != null && points.Length > 0) { this.RaiseChanged(string.Format("【开始装载年级[{0}]下科目[{1}]下知识要点数据..】", grade.GradeName, catalogs[i].CatalogName)); for (int j = 0; j < points.Length; j++) { KnowledgePoint point = new KnowledgePoint(); point.PointID = points[j].PointID; point.PointCode = points[j].PointCode; point.PointName = points[j].PointName; point.Description = points[j].Description; point.OrderNO = points[j].OrderNO; catalog.Points.Add(point); } } #endregion g.Catalogs.Add(catalog); } } #endregion #region 班级。 Impl.Class[] classes = grade.Classes; if (classes != null && classes.Length > 0) { for (int i = 0; i < classes.Length; i++) { Class c = new Class(); c.ClassID = classes[i].ClassID; c.ClassCode = classes[i].ClassCode; c.ClassName = classes[i].ClassName; c.OrderNO = classes[i].OrderNO; this.RaiseChanged(string.Format("【开始装载年级[{0}]下班级[{1}]数据..】", grade.GradeName, classes[i].ClassName)); #region 学生。 Impl.Student[] students = classes[i].Students; if (students != null && students.Length > 0) { for (int k = 0; k < students.Length; k++) { Student s = new Student(); s.StudentID = students[k].StudentID; s.StudentCode = students[k].StudentCode; s.StudentName = students[k].StudentName; c.Students.Add(s); this.RaiseChanged(string.Format("{0}.{1}[{2},{3}]", k + 1, s.StudentName, classes[i].ClassName, grade.GradeName)); } } #endregion g.Classes.Add(c); } } #endregion sync.School.Teacher.Grades.Add(g); this.RaiseChanged("【已装载完成年级数据:" + g.ToString() + "】"); } } else this.RaiseChanged("同步年级信息失败!"); #endregion } else this.RaiseChanged("同步教师信息失败!"); #endregion } else this.RaiseChanged("同步学校信息失败!"); #endregion this.RaiseChanged("【已完成装载数据,保存数据到本地存储...】"); TeaSyncData.Serialize(sync, FolderStructure.UserSyncDataFile(callback.AsyncState.ToString())); this.RaiseChanged("【完成数据同步!】"); if (complete != null) complete(null, EventArgs.Empty); } else { this.RaiseChanged("【数据发生异常:" + result.ResultMessage + "】"); } } }), teacherID); } catch (Exception e) { this.RaiseChanged("【下载同步数据发生异常】" + e.Message); } } }
/// <summary> /// 加载数据。 /// </summary> /// <param name="data"></param> /// <param name="bShowStudents"></param> void LoadData(TeaSyncData data, bool bShowStudents) { if (data != null && data.School != null && data.School.Teacher != null) { List<TreeNode> roots = new List<TreeNode>(); Teacher teacher = data.School.Teacher; if (teacher.Grades != null && teacher.Grades.Count > 0) { foreach (Grade g in teacher.Grades) { foreach (Class c in g.Classes) { TreeNode node = new TreeNode(); node.Text = node.ToolTipText = string.Format("{0}[{1}]", c.ClassName, g.GradeName); node.Tag = string.Format("ClassID#{0}", c.ClassID); //科目。 foreach (Catalog catalog in g.Catalogs) { TreeNode child = new TreeNode(); child.Text = child.ToolTipText = catalog.CatalogName; child.Tag = string.Format("CatalogID#{0}", catalog.CatalogID); if (bShowStudents && c.Students != null) { foreach (Student s in c.Students) { TreeNode sn = new TreeNode(); sn.Text = child.ToolTipText = string.Format("{0}[{1}]", s.StudentName, s.StudentCode); sn.Tag = string.Format("StudentID#{0}", s.StudentID); child.Nodes.Add(sn); } } node.Nodes.Add(child); } //添加。 roots.Add(node); } } } #region 重新加载树。 if (this.treeView != null) { this.treeView.BeginUpdate(); this.treeView.Nodes.Clear(); if (roots != null && roots.Count > 0) { this.treeView.Nodes.AddRange(roots.ToArray()); } this.treeView.EndUpdate(); } #endregion } }
/// <summary> /// 加载左边树数据。 /// </summary> private void LoadLeftTreeData(TeaSyncData data) { if (this.userInfo != null && data != null && data.School != null && data.School.Teacher != null) { Teacher teacher = data.School.Teacher; if (teacher.TeacherID.Equals(this.userInfo.UserID, StringComparison.InvariantCultureIgnoreCase)) { List<TreeNode> roots = new List<TreeNode>(); if (teacher.Grades != null && teacher.Grades.Count > 0) { foreach (Grade g in teacher.Grades) { foreach (Catalog catalog in g.Catalogs) { //科目。 TreeNode node = new TreeNode(); node.Text = node.ToolTipText = string.Format("[{0}]{1}", g.GradeName, catalog.CatalogName); node.Tag = string.Format("CatalogID#{0}", catalog.CatalogID); foreach (Class c in g.Classes) { //班级。 TreeNode child = new TreeNode(); child.Text = child.ToolTipText = c.ClassName; child.Tag = string.Format("ClassID#{0}", c.ClassID); child.ContextMenuStrip = this.contextMenuStrip; node.Nodes.Add(child); } roots.Add(node); } } } #region 重新加载树。 if (this.treeView != null) { this.treeView.BeginUpdate(); this.treeView.Nodes.Clear(); if (roots != null && roots.Count > 0) { this.treeView.Nodes.AddRange(roots.ToArray()); } this.treeView.EndUpdate(); } #endregion } } }