protected override void GenerateTreeStruct(KeyCatalog root)
        {
            string cmd = "select uid,\"group\" from $school where uid in(@PrimaryKeys) order by \"group\"";

            StringBuilder primarykeys = new StringBuilder();
            primarykeys.AppendFormat("{0}", "-1"); //如果沒有資料也不會爆掉。
            foreach (string key in Source)
                primarykeys.AppendFormat(",{0}", key);

            cmd = cmd.Replace("@PrimaryKeys", primarykeys.ToString());

            DataTable result = Backend.Select(cmd);

            root["未分類"].Tag = int.MaxValue;

            foreach (DataRow row in result.Rows)
            {
                string id = row["uid"].ToString();
                string group = row["group"].ToString();

                if (string.IsNullOrWhiteSpace(group))
                    group = "未分類";

                root[group].AddKey(id);
            }
        }
示例#2
0
        protected override void GenerateTreeStruct(KeyCatalog root)
        {
            string cmd = "select uid,\"group\" from $school where uid in(@PrimaryKeys) order by \"group\"";

            StringBuilder primarykeys = new StringBuilder();

            primarykeys.AppendFormat("{0}", "-1"); //如果沒有資料也不會爆掉。
            foreach (string key in Source)
            {
                primarykeys.AppendFormat(",{0}", key);
            }

            cmd = cmd.Replace("@PrimaryKeys", primarykeys.ToString());

            DataTable result = Backend.Select(cmd);

            root["未分類"].Tag = int.MaxValue;

            foreach (DataRow row in result.Rows)
            {
                string id    = row["uid"].ToString();
                string group = row["group"].ToString();

                if (string.IsNullOrWhiteSpace(group))
                {
                    group = "未分類";
                }

                root[group].AddKey(id);
            }
        }
        protected override void GenerateTreeStruct(KeyCatalog root)
        {
            string cmd =
            @"select id,grade_year from class
            where class.id in(@PrimaryKeys)";

            StringBuilder primarykeys = new StringBuilder();
            primarykeys.AppendFormat("{0}", "-1"); //如果沒有資料也不會爆掉。
            foreach (string key in Source)
                primarykeys.AppendFormat(",{0}", key);

            cmd = cmd.Replace("@PrimaryKeys", primarykeys.ToString());

            DataTable result = Backend.Select(cmd);

            foreach (DataRow row in result.Rows)
            {
                GradeYear gy = GradeYear.ToGradeYear(row["grade_year"] + "");
                string id = row["id"].ToString();

                if (!root.Subcatalogs.Contains(gy.ChineseTitle))
                {
                    //指定排序因子。
                    if (gy == GradeYear.Undefined) //未分年級要排最後。
                        root[gy.ChineseTitle].Tag = int.MaxValue;
                    else
                        root[gy.ChineseTitle].Tag = gy.Number;
                }

                root[gy.ChineseTitle].AddKey(id);
            }
        }
        protected override int KeyCatalogComparer(KeyCatalog x, KeyCatalog y)
        {
            int X, Y;

            if (!int.TryParse(x.Tag + "", out X))
                X = int.MinValue;

            if (!int.TryParse(y.Tag + "", out Y))
                Y = int.MinValue;

            return X.CompareTo(Y);
        }
        protected override void GenerateTreeStruct(KeyCatalog root)
        {
            string cmd =
            @"select teacher.id,class.id classid,class.grade_year,teacher.status
            from teacher left join class on teacher.id=class.ref_teacher_id
            where teacher.id in(@PrimaryKeys)";

            StringBuilder primarykeys = new StringBuilder();
            primarykeys.AppendFormat("{0}", "-1"); //如果沒有資料也不會爆掉。
            foreach (string key in Source)
                primarykeys.AppendFormat(",{0}", key);

            cmd = cmd.Replace("@PrimaryKeys", primarykeys.ToString());

            DataTable result = Backend.Select(cmd);

            KeyCatalog advisor = root.Subcatalogs["班導師"];
            KeyCatalog unadvisor = root.Subcatalogs["非班導師"];
            KeyCatalog deleted = root.Subcatalogs["刪除教師"];

            //設定排序因子。
            advisor.Tag = 0; //排前面。
            unadvisor.Tag = 1;
            deleted.Tag = 2;

            foreach (DataRow row in result.Rows)
            {
                GradeYear gy = GradeYear.ToGradeYear(row["grade_year"] + "");
                string classid = row["classid"] + "";
                string id = row["id"] + "";
                string stauts = row["status"] + "";

                if (stauts == "256")
                    deleted.AddKey(id);
                else if (string.IsNullOrWhiteSpace(classid))
                    unadvisor.AddKey(id);
                else
                {
                    if (!advisor.Subcatalogs.Contains(gy.ChineseTitle))
                    {
                        //指定排序因子。
                        if (gy == GradeYear.Undefined) //未分年級要排最後。
                            advisor[gy.ChineseTitle].Tag = int.MaxValue;
                        else
                            advisor[gy.ChineseTitle].Tag = gy.Number;
                    }
                    advisor[gy.ChineseTitle].AddKey(id);
                }
            }
        }
示例#6
0
        protected override int KeyCatalogComparer(KeyCatalog x, KeyCatalog y)
        {
            int X, Y;

            if (!int.TryParse(x.Tag + "", out X))
            {
                X = int.MinValue;
            }

            if (!int.TryParse(y.Tag + "", out Y))
            {
                Y = int.MinValue;
            }

            return(X.CompareTo(Y));
        }
        protected override void GenerateTreeStruct(KeyCatalog root)
        {
            QueryHelper query = new QueryHelper();

            string cmd =
            @"select student.id,class_name,class.grade_year
            from student left join class on student.ref_class_id=class.id
            where student.id in(@PrimaryKeys)";

            StringBuilder primarykeys = new StringBuilder();
            primarykeys.AppendFormat("{0}", "-1"); //如果沒有資料也不會爆掉。
            foreach (string key in Source)
                primarykeys.AppendFormat(",{0}", key);

            cmd = cmd.Replace("@PrimaryKeys", primarykeys.ToString());

            DataTable result = query.Select(cmd);

            root.Clear();
            foreach (DataRow row in result.Rows)
            {
                GradeYear gy = GradeYear.ToGradeYear(row["grade_year"] + "");
                string className = row["class_name"].ToString();
                string id = row["id"].ToString();

                if (string.IsNullOrWhiteSpace(className))
                    className = "未分班";

                if (!root.Subcatalogs.Contains(gy.ChineseTitle))
                {
                    //指定排序因子。
                    if (gy == GradeYear.Undefined) //未分年級要排最後。
                        root[gy.ChineseTitle].Tag = int.MaxValue;
                    else
                        root[gy.ChineseTitle].Tag = gy.Number;
                }

                root[gy.ChineseTitle][className].AddKey(id);
            }
        }
 public void Add(KeyCatalog catalog)
 {
     _catalogs.Add(catalog.Name, catalog);
 }
        private void RenderNodes(KeyCatalog catalog, NodeCollection nodes, int restoreLevel)
        {
            restoreLevel--;
            foreach (KeyCatalog sub in catalog.Subcatalogs.SortedValues)
            {
                KeyNode n = new KeyNode(sub.ToString()) { Catalog = sub };
                nodes.Add(n);

                if (restoreLevel < 0)
                {
                    if (SelectionNodeName == sub.Name)
                        ATree.SelectedNode = n;
                }

                if (!sub.IsLeaf)
                    RenderNodes(sub, n.Nodes, restoreLevel);
            }
        }
        /// <summary>
        /// 產生資料到畫面上,請透過 GenerateDataModel 產生資料結構。
        /// </summary>
        protected void RenderTreeView(bool reserveSelection)
        {
            if (reserveSelection)
                ReserveTreeSelection();

            KeyCatalog userroot = new KeyCatalog(RootCaption, KCFactory);
            Task task = Task.Factory.StartNew((x) =>
            {
                GenerateTreeStruct(x as KeyCatalog);
            }, userroot);

            task.ContinueWith(x =>
            {
                ATree.Nodes.Clear();

                KeyCatalog rkc = x.AsyncState as KeyCatalog;

                if (ShowRoot)
                {
                    KeyCatalog root = new KeyCatalog("", KCFactory);
                    root.Subcatalogs.Add(rkc);
                    RenderNodes(root, ATree.Nodes, RestoreLevel);
                }
                else
                    RenderNodes(rkc, ATree.Nodes, RestoreLevel);

                foreach (Node n in ATree.Nodes)
                    n.Expand();

            }, UISyncContext);
        }
 /// <summary>
 /// 提供 KeyCatalog 標題的格式化方法。
 /// </summary>
 /// <param name="catalog"></param>
 /// <returns></returns>
 protected virtual string KeyCatalogTitleFormat(KeyCatalog catalog)
 {
     return string.Format("{0}({1})", catalog.Name, catalog.TotalKeyCount);
 }
 /// <summary>
 /// 排序 KeyCatalog,如果不改寫則使用 Name 屬性排序。
 /// </summary>
 /// <param name="x"></param>
 /// <param name="y"></param>
 /// <returns></returns>
 protected virtual int KeyCatalogComparer(KeyCatalog x, KeyCatalog y)
 {
     return NameComparer.Compare(x.Name, y.Name);
 }
 /// <summary>
 /// 產生資料模型,將資料產生在 Root 屬性上。
 /// </summary>
 protected virtual void GenerateTreeStruct(KeyCatalog root)
 {
     throw new NotImplementedException("您應該實作此方法。");
 }
        protected override int KeyCatalogComparer(KeyCatalog x, KeyCatalog y)
        {
            return (x.Tag + "").CompareTo(y.Tag + "");
            //int X, Y;

            //if (!int.TryParse(x.Tag + "", out X))
            //    X = int.MinValue;

            //if (!int.TryParse(y.Tag + "", out Y))
            //    Y = int.MinValue;

            //return X.CompareTo(Y);
        }
 protected override int KeyCatalogComparer(KeyCatalog x, KeyCatalog y)
 {
     if (x.Tag != null && y.Tag != null)
     {//按年級排序。
         GradeYear gyX = GradeYear.ToGradeYear(x.Tag + "");
         GradeYear gyY = GradeYear.ToGradeYear(y.Tag + "");
         return gyX.Number.CompareTo(gyY.Number);
     }
     else //按名字排序。
         return NameComparer.Compare(x.Name, y.Name);
 }
        protected override void GenerateTreeStruct(KeyCatalog root)
        {
            QueryHelper query = new QueryHelper();

            string cmd = @"select student.id, dg.name, class.grade_year, student.status, dg.order from student
            left join $ischool.emba.student_brief2 as sb on student.id=sb.ref_student_id
            left join $ischool.emba.department_group dg on dg.uid=sb.ref_department_group_id
            left join class on class.id=student.ref_class_id
            where student.id in(@PrimaryKeys)
            order by dg.order, dg.name, class.grade_year";

            StringBuilder primarykeys = new StringBuilder();
            primarykeys.AppendFormat("{0}", "-1"); //如果沒有資料也不會爆掉。
            foreach (string key in Source)
                primarykeys.AppendFormat(",{0}", key);

            cmd = cmd.Replace("@PrimaryKeys", primarykeys.ToString());

            DataTable result = Backend.Select(cmd);

            //KeyCatalog advisor = root.Subcatalogs["系所組別"];
            //KeyCatalog unadvisor = root.Subcatalogs["未設定系所組"];
            //KeyCatalog deleted = root.Subcatalogs["刪除學生"];

            //設定排序因子。
            //advisor.Tag = 0; //排前面。
            //unadvisor.Tag = 1;
            //deleted.Tag = 2;

            root.Subcatalogs["未設定"].Tag = int.MaxValue;
            foreach (DataRow row in result.Rows)
            {
                string department = (string.IsNullOrEmpty((row["name"] + "")) ? "未設定" : (row["name"] + ""));
                //KeyCatalog dg = advisor.Subcatalogs[department];
                GradeYear gy = GradeYear.ToGradeYear(row["grade_year"] + "");
                //string classid = row["classid"] + "";
                string id = row["id"] + "";
                string stauts = row["status"] + "";

                //root.Subcatalogs[department].AddKey(id);
                //if (stauts == "256")
                //    deleted.AddKey(id);
                //else if (string.IsNullOrWhiteSpace(classid))
                //    unadvisor.AddKey(id);
                //else
                //{
                //if (!root.Subcatalogs[department].Subcatalogs.Contains(gy.ChineseTitle))
                //{
                //指定排序因子。
                if (gy == GradeYear.Undefined) //未分年級要排最後。
                    root.Subcatalogs[department][gy.ChineseTitle].Tag = int.MaxValue;
                else
                {
                    root.Subcatalogs[department].Tag = row["order"] + "";
                    root.Subcatalogs[department][gy.ChineseTitle].Tag = row["grade_year"] + "";
                }
                root.Subcatalogs[department][gy.ChineseTitle].AddKey(id);
                //}
            }
        }