/// <summary>
        /// 註冊資料項目,並且一併處理權限問題。
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="panel"></param>
        public static void RegisterDetailContent <T>(this NLDPanel panel)
            where T : FISCA.Presentation.DetailContent, new()
        {
            AccessControlAttribute access = Attribute.GetCustomAttribute(typeof(T), typeof(AccessControlAttribute)) as AccessControlAttribute;

            if (access != null)
            {
                if (!ACL.ContainsKey(typeof(T))) //指定的型別沒有被註冊過才進行註冊。
                {
                    ACL.Add(typeof(T), access);

                    Catalog cg = GetCatalog(access.Path);

                    if (!FeatureCodes.Contains(access.Code)) //重覆的代碼也不進行註冊。
                    {
                        FeatureCodes.Add(access.Code);
                        cg.Add(new DetailItemFeature(typeof(T)));
                    }
                }

                if (!UserAcl.Current[access.Code].Viewable)
                {
                    return;
                }
            }

            DetailBulider <T> builder = new DetailBulider <T>();

            builder.ContentBulided += new EventHandler <ContentBulidedEventArgs <T> >(builder_ContentBulided);

            panel.AddDetailBulider(builder);
        }
예제 #2
0
        public Teacher(NLDPanel panel)
        {
            Panel = panel;

            FilterList.Add(new Status("一般", 1));
            FilterList.Add(new Status("刪除", 256));
        }
예제 #3
0
 private Student(NLDPanel present)
     : base(present)
 {
     this.ItemLoaded += delegate
     {
         lock (_ClassStudents)
         {
             _ClassStudents.Clear();
             foreach (var item in this.Items)
             {
                 if (item.Status == "一般" || item.Status == "輟學")
                 {
                     if (!_ClassStudents.ContainsKey(item.RefClassID))
                     {
                         _ClassStudents.Add(item.RefClassID, new List <StudentRecord>());
                     }
                     _ClassStudents[item.RefClassID].Add(item);
                 }
             }
         }
     };
     this.ItemUpdated += delegate(object sender, ItemUpdatedEventArgs e)
     {
         lock (_ClassStudents)
         {
             List <string> keys = new List <string>(e.PrimaryKeys);
             keys.Sort();
             foreach (var cid in _ClassStudents.Keys)
             {
                 List <StudentRecord> removeItems = new List <StudentRecord>();
                 foreach (var item in _ClassStudents[cid])
                 {
                     if (keys.BinarySearch(item.ID) >= 0)
                     {
                         removeItems.Add(item);
                     }
                 }
                 foreach (var item in removeItems)
                 {
                     _ClassStudents[cid].Remove(item);
                 }
             }
             foreach (var key in e.PrimaryKeys)
             {
                 var item = Items[key];
                 if (item != null)
                 {
                     if (!_ClassStudents.ContainsKey(item.RefClassID))
                     {
                         _ClassStudents.Add(item.RefClassID, new List <StudentRecord>());
                     }
                     _ClassStudents[item.RefClassID].Add(item);
                 }
             }
         }
     };
 }
예제 #4
0
        public Student(NLDPanel panel)
        {
            Panel = panel;

            FilterList.Add(new Status("在學", 1));
            FilterList.Add(new Status("休學", 4));
            FilterList.Add(new Status("退學", 64));
            FilterList.Add(new Status("畢業", 16));
            FilterList.Add(new Status("刪除", 256));
        }
예제 #5
0
 private static void InitMainPanel()
 {
     foreach (NLDPanel Panel in MotherForm.Panels)
     {
         if (Panel.Group.Equals("學校"))
         {
             MainPanel = Panel;
         }
     }
 }
예제 #6
0
        private static void InitMainPanel()
        {
            MainPanel       = new NLDPanel();
            MainPanel.Group = "DSAServer";
            MainPanel.SetDescriptionPaneBulider <DetailItemDescription>();

            InitBasicSearch();

            MotherForm.AddPanel(MainPanel);
            MainPanel.AddView(new DefaultView());
        }
예제 #7
0
파일: Class.cs 프로젝트: congduy/JHCore
 private Class(NLDPanel present)
     : base(present)
 {
     this.ItemLoaded += delegate
     {
         lock (_TeacherSupervised)
         {
             _TeacherSupervised.Clear();
             foreach (var item in Items)
             {
                 if (!_TeacherSupervised.ContainsKey(item.RefTeacherID))
                 {
                     _TeacherSupervised.Add(item.RefTeacherID, new List <ClassRecord>());
                 }
                 _TeacherSupervised[item.RefTeacherID].Add(item);
             }
         }
     };
     this.ItemUpdated += delegate(object sender, ItemUpdatedEventArgs e)
     {
         lock (_TeacherSupervised)
         {
             List <string> keys = new List <string>(e.PrimaryKeys);
             keys.Sort();
             foreach (var tid in _TeacherSupervised.Keys)
             {
                 List <ClassRecord> removeItems = new List <ClassRecord>();
                 foreach (var item in _TeacherSupervised[tid])
                 {
                     if (keys.BinarySearch(item.ID) >= 0)
                     {
                         removeItems.Add(item);
                     }
                 }
                 foreach (var item in removeItems)
                 {
                     _TeacherSupervised[tid].Remove(item);
                 }
             }
             foreach (var key in e.PrimaryKeys)
             {
                 var item = Items[key];
                 if (item != null)
                 {
                     if (!_TeacherSupervised.ContainsKey(item.RefTeacherID))
                     {
                         _TeacherSupervised.Add(item.RefTeacherID, new List <ClassRecord>());
                     }
                     _TeacherSupervised[item.RefTeacherID].Add(item);
                 }
             }
         }
     };
 }
예제 #8
0
        private static void InitMainPanel()
        {
            bool addPanel = true;

            foreach (NLDPanel Panel in MotherForm.Panels)
            {
                if (Panel.Group.Equals("學校"))
                {
                    MainPanel = Panel;
                    addPanel  = false;
                }
            }

            if (addPanel)
            {
                MainPanel       = new NLDPanel();
                MainPanel.Group = "學校";
            }
        }
예제 #9
0
        //載入學校資料
        private void loadSchools()
        {
            NLDPanel panel = (NLDPanel)MotherForm.Panels.ToList <INCPanel>()[0];

            this.SelectedSchoolIDs = panel.SelectedSource;

            if (this.SelectedSchoolIDs.Count < 1)
            {
                FISCA.Presentation.Controls.MsgBox.Show("請先選擇要匯出資料的學校!");
                this.Close();
            }

            this.SelectedSchools = _Helper.Select <School>(this.SelectedSchoolIDs);

            this.lstSchools.Items.Clear();
            foreach (School sch in SelectedSchools)
            {
                this.lstSchools.Items.Add($"{sch.Title}  {sch.DSNS}");
            }
            this.labelX1.Text = $"將針對以下 {SelectedSchools.Count} 所學校執行解鎖 :";
        }
예제 #10
0
        public LegacyPresentBase(NLDPanel present)
        {
            Present   = present;
            UseFilter = false;

            ItemUpdated += delegate(object sender, ItemUpdatedEventArgs e)
            {
                Present.RefillListPane();
                SetSource();
            };

            ItemLoaded += delegate(object sender, EventArgs e)
            {
                Present.ShowLoading = false;
                SetSource();
            };

            Present.CompareSource += delegate(object sender, CompareEventArgs e)
            {
                e.Result = QuickCompare(e.Value1, e.Value2);
            };

            Present.SelectedSourceChanged += delegate
            {
                if (SelectedListChanged != null)
                {
                    SelectedListChanged(this, EventArgs.Empty);
                }
            };

            Present.TempSourceChanged += delegate
            {
                if (TemporaListChanged != null)
                {
                    TemporaListChanged(this, EventArgs.Empty);
                }
            };
        }
예제 #11
0
 private Course(NLDPanel present)
     : base(present)
 {
 }
예제 #12
0
 private static void InitMainPanel()
 {
     foreach(NLDPanel Panel in MotherForm.Panels)
         if (Panel.Group.Equals("學校"))
             MainPanel = Panel;
 }
예제 #13
0
        private static void InitMainPanel()
        {
            MainPanel = new NLDPanel();
            MainPanel.Group = "學校";
            MainPanel.SetDescriptionPaneBulider<DetailItemDescription>();

            InitBasicSearch();

            MotherForm.AddPanel(MainPanel);
            MainPanel.AddView(new DefaultView());
        }
예제 #14
0
 /// <summary>
 /// 將欄位註冊到畫面上。
 /// </summary>
 /// <param name="panel"></param>
 public void Register(NLDPanel panel)
 {
     panel.AddListPaneField(Field);
 }
예제 #15
0
 private Teacher(NLDPanel present)
     : base(present)
 {
 }
 /// <summary>
 /// 將欄位註冊到畫面上。
 /// </summary>
 /// <param name="panel"></param>
 public void Register(NLDPanel panel)
 {
     panel.AddListPaneField(Field);
 }
예제 #17
0
 public Course(NLDPanel panel)
 {
     Panel = panel;
 }