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