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