コード例 #1
0
ファイル: TagView.cs プロジェクト: ischoolinc/K12Graduation
        void TagView_SourceChanged(object sender, EventArgs e)
        {
            TagDic.Clear();
            TestDic1.Clear();

            List <GraduateUDT> TestList = new List <GraduateUDT>();

            if (Source.Count() != 0)
            {
                List <string> list = new List <string>();
                foreach (string each in Source)
                {
                    if (list.Contains(each))
                    {
                        continue;
                    }
                    list.Add(each);
                }
                //取得資料
                TestList = _AccessHelper.Select <GraduateUDT>(UDT_S.PopOneCondition("UID", list));
            }
            //排序
            TestList.Sort(SortClassName);

            foreach (GraduateUDT obj in TestList)
            {
                #region 依學生類別
                if (!string.IsNullOrEmpty(obj.Tag))
                {
                    XmlElement xmlelement = DSXmlHelper.LoadXml(obj.Tag);
                    foreach (XmlElement xmlE in xmlelement.SelectNodes("Tag"))
                    {
                        string Prefix = xmlE.GetAttribute("Prefix");
                        string Name   = xmlE.GetAttribute("Name");
                        //第一層
                        if (!TagDic.ContainsKey(Prefix))
                        {
                            TagDic.Add(Prefix, new Dictionary <string, List <string> >());
                        }

                        //第二層
                        if (!TagDic[Prefix].ContainsKey(Name))
                        {
                            TagDic[Prefix].Add(Name, new List <string>());
                        }

                        TagDic[Prefix][Name].Add(obj.UID);
                    }
                }
                else
                {
                    if (!TagDic.ContainsKey(NoTag))
                    {
                        TagDic.Add(NoTag, new Dictionary <string, List <string> >());
                    }

                    if (!TagDic[NoTag].ContainsKey(NoTag))
                    {
                        TagDic[NoTag].Add(NoTag, new List <string>());
                    }

                    TagDic[NoTag][NoTag].Add(obj.UID);
                }
                #endregion

                #region 建立所有學生記錄
                if (!TestDic1.ContainsKey(obj.UID))
                {
                    TestDic1.Add(obj.UID, obj);
                }
                #endregion
            }

            advTree1.Nodes.Clear();

            DevComponents.AdvTree.Node Node1 = new DevComponents.AdvTree.Node();
            Node1.Text = "依學生類別(" + TestDic1.Count() + ")";
            Node1.Tag  = "All";
            advTree1.Nodes.Add(Node1);           //加入

            foreach (string each in TagDic.Keys) //前置詞
            {
                if (each == NoTag)
                {
                    continue;
                }

                if (!string.IsNullOrEmpty(each))
                {
                    List <string> list = new List <string>();
                    foreach (string each2 in TagDic[each].Keys) //標籤名稱
                    {
                        foreach (string each3 in TagDic[each][each2])
                        {
                            if (list.Contains(each3))
                            {
                                continue;
                            }

                            list.Add(each3);
                        }
                    }

                    DevComponents.AdvTree.Node Node2 = new DevComponents.AdvTree.Node();
                    Node2.Text = each + "(" + list.Count + ")";
                    Node2.Tag  = each;
                    Node1.Nodes.Add(Node2);                     //加入

                    foreach (string each2 in TagDic[each].Keys) //標籤名稱
                    {
                        TagViewObj obj = new TagViewObj(each, each2);

                        DevComponents.AdvTree.Node Node3 = new DevComponents.AdvTree.Node();
                        Node3.Text = each2 + "(" + TagDic[each][each2].Count + ")";
                        Node3.Tag  = obj;
                        Node2.Nodes.Add(Node3); //加入
                    }
                }
                else //如果是未分群組
                {
                    List <string> list = new List <string>();
                    foreach (string each2 in TagDic[each].Keys) //標籤名稱
                    {
                        foreach (string each3 in TagDic[each][each2])
                        {
                            if (list.Contains(each3))
                            {
                                continue;
                            }

                            list.Add(each3);
                        }
                    }

                    //DevComponents.AdvTree.Node Node2 = new DevComponents.AdvTree.Node();
                    //Node2.Text = each + "(" + list.Count + ")";
                    //Node2.Tag = each;
                    //Node1.Nodes.Add(Node2); //加入

                    foreach (string each2 in TagDic[each].Keys) //標籤名稱
                    {
                        TagViewObj obj = new TagViewObj(each, each2);

                        DevComponents.AdvTree.Node Node3 = new DevComponents.AdvTree.Node();
                        Node3.Text = each2 + "(" + TagDic[each][each2].Count + ")";
                        Node3.Tag  = obj;
                        Node1.Nodes.Add(Node3); //加入
                    }
                }
            }

            if (TagDic.ContainsKey(NoTag))
            {
                if (TagDic[NoTag].ContainsKey(NoTag))
                {
                    DevComponents.AdvTree.Node Node4 = new DevComponents.AdvTree.Node();
                    Node4.Text = NoTag + "(" + TagDic[NoTag][NoTag].Count + ")";
                    Node4.Tag  = NoTag;
                    Node1.Nodes.Add(Node4); //加入
                }
            }


            //List<string> _Source = TestList.Select(x => x.UID).ToList();
            //SetListPaneSource(_Source, false, false);
        }
コード例 #2
0
ファイル: TagView.cs プロジェクト: ischoolinc/K12Graduation
        private void advTree1_NodeClick(object sender, DevComponents.AdvTree.TreeNodeMouseEventArgs e)
        {
            //判斷是否有按Control,Shift
            bool SelectedAll = (Control.ModifierKeys & Keys.Control) == Keys.Control;
            bool AddToTemp   = (Control.ModifierKeys & Keys.Shift) == Keys.Shift;

            if (e.Node.Tag is string)
            {
                string tag = "" + e.Node.Tag;
                if (TagDic.ContainsKey(tag)) //所有學生 or 班級名稱Node)
                {
                    List <string> list = new List <string>();
                    foreach (string each1 in TagDic[tag].Keys)
                    {
                        foreach (string each2 in TagDic[tag][each1])
                        {
                            if (list.Contains(each2))
                            {
                                continue;
                            }

                            list.Add(each2);
                        }
                    }
                    SetListPaneSource(list, SelectedAll, AddToTemp);
                }
                else if (tag == NoTag) //未分類
                {
                    List <string> list = new List <string>();
                    list = TagDic[NoTag][NoTag];
                    SetListPaneSource(list, SelectedAll, AddToTemp);
                    //星期一解決
                }
                else if (tag == "ALL")
                {
                    SetListPaneSource(TestDic1.Keys, SelectedAll, AddToTemp);
                }
            }
            else if (e.Node.Tag is TagViewObj)
            { //如果是特殊TagViewObj物件
                List <string> list = new List <string>();
                TagViewObj    obj  = (TagViewObj)e.Node.Tag;
                foreach (string each1 in TagDic.Keys)
                {
                    if (each1 != obj._Prefix)
                    {
                        continue;
                    }

                    foreach (string each2 in TagDic[each1].Keys)
                    {
                        if (each2 != obj._Name)
                        {
                            continue;
                        }

                        list = TagDic[each1][each2];
                        SetListPaneSource(list, SelectedAll, AddToTemp);
                    }
                }
            }
        }