/// <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);
                }

            }
        }
Пример #2
0
 /// <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
     }
 }
Пример #3
0
 /// <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
         }
     }
 }