예제 #1
0
        /// <summary>
        /// 按下儲存
        /// </summary>
        /// <param name="e"></param>
        protected override void OnSaveButtonClick(EventArgs e)
        {
            if (!FISCA.Permission.UserAcl.Current[Global.自訂資料欄位功能代碼].Editable)
            {
                MessageBox.Show("此帳號無編輯權限...", "ischool");
                this.CancelButtonVisible = false;
                this.SaveButtonVisible   = false;
                return;
            }

            try
            {
                // 檢查資料
                bool canSave = true;
                dgv.EndEdit();
                foreach (DataGridViewRow drv in dgv.Rows)
                {
                    foreach (DataGridViewCell cell in drv.Cells)
                    {
                        if (cell.ErrorText != "")
                        {
                            canSave = false;
                        }
                    }
                }

                if (canSave)
                {
                    // 刪除舊資料 UDT
                    if (_DeleteDataList.Count > 0)
                    {
                        // 真實刪除
                        foreach (DAL.UserDefData ud in _DeleteDataList)
                        {
                            ud.Deleted = true;
                        }
                        UDTTransfer.DeleteDataToUDT(_DeleteDataList);
                    }
                    _InsertDataList.Clear();

                    // 儲存資料到 UDT
                    foreach (DataGridViewRow row in dgv.Rows)
                    {
                        if (row.IsNewRow)
                        {
                            continue;
                        }
                        DAL.UserDefData udd = new UserDefineData.DAL.UserDefData();
                        // 資料轉型
                        if (row.Cells[Value.Index].Value != null)
                        {
                            udd.Value = row.Cells[Value.Index].Value.ToString();
                        }
                        udd.RefID = PrimaryKey;

                        string key = string.Empty;
                        if (row.Cells[FieldName.Index].Value != null)
                        {
                            key           = row.Cells[FieldName.Index].Value.ToString();
                            udd.FieldName = key;
                        }

                        prlp.SetAfterSaveText(key + "欄位名稱", key);
                        prlp.SetAfterSaveText(key + "值", udd.Value);


                        _InsertDataList.Add(udd);
                    }

                    // 新增至 UDT
                    UDTTransfer.InsertDataToUDT(_InsertDataList);
                    prlp.SetActionBy("學生", "自訂資料欄位");
                    prlp.SetAction("修改自訂資料欄位");
                    StudentRecord studRec = Student.SelectByID(PrimaryKey);
                    prlp.SetDescTitle("學生姓名:" + studRec.Name + ",學號:" + studRec.StudentNumber + ",");
                    prlp.SaveLog("", "", "student", PrimaryKey);
                }

                this.CancelButtonVisible = false;
                this.SaveButtonVisible   = false;
                _BGWorker.RunWorkerAsync();
            }
            catch (Exception ex)
            {
                FISCA.Presentation.Controls.MsgBox.Show("儲存失敗!" + ex.Message);
            }
        }
예제 #2
0
 void _BGWorker_DoWork(object sender, DoWorkEventArgs e)
 {
     // modify by 小郭, 2013/12/16
     // _UserDefDataList = UDTTransfer.GetDataFromUDT(PrimaryKey);
     _UserDefDataList = UDTTransfer.GetDataFromUDTIncludeUserConfig(PrimaryKey);
 }
        public DataRationalityMessage Execute()
        {
            DataRationalityMessage retMsg = new DataRationalityMessage();

            // 取得所有學生資料
            Dictionary <string, StudentRecord> studIDDict = new Dictionary <string, StudentRecord> ();
            List <StudentRecord> studRecList = Student.SelectAll();

            foreach (StudentRecord stud in studRecList)
            {
                studIDDict.Add(stud.ID, stud);
            }

            // 取得學生自訂欄位資料
            List <UserDefineData.DAL.UserDefData> UserDefDataList = UDTTransfer.GetDataFromUDT(studIDDict.Keys.ToList());

            // 檢查資料並組合
            Dictionary <string, Dictionary <string, List <UserDefineData.DAL.UserDefData> > > dataDict = new Dictionary <string, Dictionary <string, List <DAL.UserDefData> > >();

            foreach (UserDefineData.DAL.UserDefData data in UserDefDataList)
            {
                if (!dataDict.ContainsKey(data.RefID))
                {
                    dataDict.Add(data.RefID, new Dictionary <string, List <DAL.UserDefData> >());
                }

                if (!dataDict[data.RefID].ContainsKey(data.FieldName))
                {
                    dataDict[data.RefID].Add(data.FieldName, new List <DAL.UserDefData>());
                }

                dataDict[data.RefID][data.FieldName].Add(data);
            }

            CorrectableRecs.Clear();
            RATRecs.Clear();
            try
            {
                foreach (string sid in dataDict.Keys)
                {
                    Dictionary <string, List <UserDefineData.DAL.UserDefData> > dataA = dataDict[sid];
                    foreach (List <UserDefineData.DAL.UserDefData> data in dataA.Values)
                    {
                        // 有重複
                        if (data.Count > 1)
                        {
                            foreach (UserDefineData.DAL.UserDefData data1 in data)
                            {
                                DoubleUserDefDataRATRec rec = new DoubleUserDefDataRATRec();
                                rec.UID    = data1.UID;
                                rec.學生系統編號 = data1.RefID;
                                rec.欄位名稱   = data1.FieldName;
                                rec.值      = data1.Value;
                                if (studIDDict.ContainsKey(data1.RefID))
                                {
                                    rec.身分證號 = studIDDict[data1.RefID].IDNumber;
                                    rec.姓名   = studIDDict[data1.RefID].Name;
                                    rec.狀態   = studIDDict[data1.RefID].Status.ToString();
                                    rec.學號   = studIDDict[data1.RefID].StudentNumber;
                                    if (studIDDict[data1.RefID].SeatNo.HasValue)
                                    {
                                        rec.座號 = studIDDict[data1.RefID].SeatNo.Value.ToString();
                                    }
                                    else
                                    {
                                        rec.座號 = "";
                                    }

                                    if (studIDDict[data1.RefID].Class != null)
                                    {
                                        rec.班級 = studIDDict[data1.RefID].Class.Name;
                                    }
                                    else
                                    {
                                        rec.班級 = "";
                                    }
                                }

                                RATRecs.Add(rec);
                                CorrectableRecs.Add(data1);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                retMsg.Message = ex.Message;

                return(retMsg);
            }

            StringBuilder strBuilder = new StringBuilder();

            strBuilder.AppendLine("檢查學生自訂欄位資料筆數:" + UserDefDataList.Count);
            strBuilder.AppendLine("自訂欄位資料有重複筆數:" + RATRecs.Count);

            var SortedRATRecords = from RATRecord in RATRecs orderby RATRecord.狀態, RATRecord.班級, K12.Data.Int.ParseAllowNull(RATRecord.座號), RATRecord.欄位名稱, RATRecord.值 select RATRecord;

            retMsg.Message = strBuilder.ToString();
            retMsg.Data    = SortedRATRecords.ToList();

            return(retMsg);
        }