/// <summary> /// 建構式,傳入精靈參數 /// </summary> /// <param name="args"></param> public SelectFields(ArgDictionary args) : base(args) { InitializeComponent(); NextButtonTitle = "開始驗證"; mArgs = args; mImportOption = mArgs["ImportOption"] as ImportFullOption; mImportWizard = mArgs["EMBA.ImportWizard"] as ImportWizard; mSelectableFields = mArgs["SelectableFields"] as List<string>; mImportOption.SelectedFields.Clear(); this.Text = mImportWizard.ValidateRule.Root.GetAttributeText("Name") + "-" + this.Text; this.Text += "(" + CurrentStep + "/" + TotalStep + ")"; //功能名稱(目前頁數/總頁數) RefreshFields(); chkSelectAll.CheckedChanged += (sender,e) => { foreach (ListViewItem Item in lvSourceFieldList.Items) { Item.Checked = chkSelectAll.Checked; } }; //若是沒有使用者可選擇的欄位,則直接跳到下個畫面;目前設這會有問題... //if (mSelectableFields.Count == 0) // this.OnNextButtonClick(); }
/// <summary> /// 建構式,傳入精靈參數 /// </summary> /// <param name="args"></param> public SelectValidate(ArgDictionary args) : base(args) { InitializeComponent(); //將精靈參數存起來用 mArgs = args; mImportOption = mArgs["ImportOption"] as ImportFullOption; mImportWizard = mArgs["EMBA.ImportWizard"] as ImportWizard; mResultFilename = Path.Combine(Constants.ValidationReportsFolder, Path.GetFileNameWithoutExtension(mImportOption.SelectedDataFile) + "(驗證報告).xls"); this.Text = mImportWizard.ValidateRule.Root.GetAttributeText("Name") + "-" + this.Text; this.Text += "(" + CurrentStep + "/" + TotalStep + ")"; //功能名稱(目前頁數/總頁數) // 若某個匯入程式不使用「進階設定」的畫面,則「下一步」要變更為「開始匯入」 if (!mImportWizard.ShowAdvancedForm) NextButtonTitle = "開始匯入"; NextButtonEnabled = false; btnViewResult.Enabled = false; #region 初始化事件 //加入可停止執行的事件內容 lnkCancelValid.Click += (sender, e) => worker.CancelAsync(); //加入檢查驗證結果程式碼 btnViewResult.Click += (sender, e) => { try { Process.Start(mResultFilename); } catch (Exception ex) { FISCA.Presentation.Controls.MsgBox.Show(ex.Message); } }; #endregion StartValidate(); }
/// <summary> /// 建構式,傳入精靈參數 /// </summary> /// <param name="args"></param> public SelectImport(ArgDictionary args) : base(args) { InitializeComponent(); this.PreviousButtonVisible = false; this.NextButtonTitle = "完成"; this.NextButtonEnabled = false; //將精靈參數存起來用 mArgs = args; mImportOption = mArgs["ImportOption"] as ImportFullOption; mImportWizard = mArgs["EMBA.ImportWizard"] as ImportWizard; mValidatedInfo = mArgs["ValidatedInfo"] as ValidatedInfo; mImportName = mImportWizard.ValidateRule.Root.GetAttributeText("Name"); this.Text = mImportName + "-" + this.Text; this.Text += "(" + CurrentStep + "/" + TotalStep + ")"; //功能名稱(目前頁數/總頁數) this.txtResult.Text = "匯入中…"; this.btnViewResult.Visible = false; this.btnAgent.Visible = false; //this.TitleText += "(" + CurrentStep + "/" + TotalStep + ")"; //功能名稱(目前頁數/總頁數) }
/// <summary> /// 建構式,傳入精靈選項 /// </summary> /// <param name="args"></param> public SelectSource(ArgDictionary args) : base(args) { InitializeComponent(); //初始化參數 mArgs = args; mImportWizard = args["EMBA.ImportWizard"] as ImportWizard; mImportOption = TryGetOption(); mImportName = mImportWizard.ValidateRule.Root.GetAttributeText("Name"); this.Text = mImportName + "-選擇檔案與匯入方式" + "(" + CurrentStep + "/" + TotalStep + ")"; //載入驗證規則及XSLT LoadValudateRule(); //在使用者選擇資料表時,將資料表的欄位都記錄下來 lstSheetNames.SelectedIndexChanged += (sender, e) => { mSheetHelper.SwitchSeet("" + lstSheetNames.SelectedItem); mImportOption.SelectedSheetName = "" + lstSheetNames.SelectedItem; mImportOption.SheetFields = mSheetHelper.Fields; this.NextButtonEnabled = ValidateNext(); }; //檢視驗證規則 btnViewRule.Click += (sender, e) => { XmlViewForm ViewForm = new XmlViewForm(); ViewForm.PopXml(mImportName,mImportOption.SelectedValidateFile); ViewForm.ShowDialog(); }; //檢視填表說明 btnViewRuleExcel.Click += (sender, e) => { Workbook book = new Workbook(); string BookAndSheetName = mImportName +"(空白表格)"; if (!string.IsNullOrEmpty(BookAndSheetName)) book.Worksheets[0].Name = BookAndSheetName; int Position = 0; foreach (XElement Element in mImportWizard.ValidateRule.Root.Element("FieldList").Elements("Field")) { StringBuilder strCommentBuilder = new StringBuilder(); string Name = Element.GetAttributeText("Name"); bool Required = Element.GetAttributeBool("Required",false); book.Worksheets[0].Cells[0, Position].PutValue(Name); book.Worksheets[0].Cells[0, Position].Style.HorizontalAlignment = TextAlignmentType.Center; book.Worksheets[0].Cells[0, Position].Style.VerticalAlignment = TextAlignmentType.Center; if (Required) { book.Worksheets[0].Cells[0, Position].Style.BackgroundColor = System.Drawing.Color.Red; strCommentBuilder.AppendLine("此為必要欄位。"); } foreach(XElement SubElement in Element.Elements("Validate")) strCommentBuilder.AppendLine(SubElement.GetAttributeText("Description")); book.Worksheets[0].Comments.Add(0,(byte)Position); book.Worksheets[0].Comments[0,Position].Note = strCommentBuilder.ToString() ; book.Worksheets[0].Comments[0, Position].WidthInch = 3; Position++; } book.Worksheets[0].AutoFitColumns(); // 開啟「空白格式」匯入檔 string emptyTemplateFile = Path.Combine(Constants.ValidationReportsFolder, BookAndSheetName + ".xls"); try { book.Save(emptyTemplateFile); Process.Start(emptyTemplateFile); } catch (Exception ex) { FISCA.Presentation.Controls.MsgBox.Show(ex.Message); } }; //選擇來源資料檔案 btnSelectFile.Click += (sender, e) => { DialogResult dr = SelectSourceFileDialog.ShowDialog(); if (dr == DialogResult.OK) { try { //記錄來源檔案名稱 string FileName = SelectSourceFileDialog.FileName; txtSourceFile.Text = SelectSourceFileDialog.FileName; mImportOption.SelectedDataFile = FileName; mSheetHelper = new SheetHelper(FileName); //將資料表列表顯示在畫面上 lstSheetNames.Items.Clear(); foreach (Worksheet sheet in mSheetHelper.Book.Worksheets) lstSheetNames.Items.Add(sheet.Name); lstSheetNames.SelectedIndex = 0; } catch (Exception ve) { MsgBox.Show(ve.Message); } } }; //將前一步不出現,下一步先失效 this.PreviousButtonVisible = false; this.NextButtonEnabled = false; }
/// <summary> /// 建構式,傳入精靈參數 /// </summary> /// <param name="args"></param> public SelectKey(ArgDictionary args) : base(args) { InitializeComponent(); mArgs = args; mImportOption = args["ImportOption"] as ImportFullOption; mImportWizard = args["EMBA.ImportWizard"] as ImportWizard; this.Text = mImportWizard.ValidateRule.Root.GetAttributeText("Name") + "-" + this.Text; this.Text += "(" + CurrentStep + "/" + TotalStep + ")"; //功能名稱(目前頁數/總頁數) #region 將使用者可選擇的鍵值顯示在畫面上 mSelectableKeyFields = args["SelectableKeyFields"] as Dictionary<string, List<string>>; int cboIdFieldLen = cboIdField.Width; foreach (string key in mSelectableKeyFields.Keys) { ComboItem item = new ComboItem(key); item.Tag = mSelectableKeyFields[key]; cboIdField.Items.Add(item); if (key.Length > cboIdFieldLen) cboIdFieldLen = key.Length; } if (cboIdField.Items.Count > 0) { cboIdField.SelectedIndex = 0; //cboIdField.Width = cboIdFieldLen; } #endregion #region 將使用者可選擇的資料動作 ImportAction Actions = mImportWizard.GetSupportActions(); bool IsInsert = (Actions & ImportAction.Insert) == ImportAction.Insert; bool IsUpdate = (Actions & ImportAction.Update) == ImportAction.Update; bool IsInsertOrUpdate = (Actions & ImportAction.InsertOrUpdate) == ImportAction.InsertOrUpdate; bool IsCover = (Actions & ImportAction.Cover) == ImportAction.Cover; bool IsDelete = (Actions & ImportAction.Delete) == ImportAction.Delete; if (IsInsert) lstActions.Items.Add("新增資料"); if (IsUpdate) lstActions.Items.Add("更新資料"); if (IsInsertOrUpdate) lstActions.Items.Add("新增或更新資料"); if (IsCover) lstActions.Items.Add("覆蓋資料"); lstActions.SelectedIndexChanged += (sender, e) => { switch ("" + lstActions.SelectedItem) { case "新增資料": lblImportActionMessage.Text = "此選項是將所有資料新增到資料庫中,不會對現有的資料進行任何修改動作。"; break; case "更新資料": lblImportActionMessage.Text = "此選項將修改資料庫中的現有資料,會依據您所指定的識別欄修改資料庫中具有相同識別的資料。"; break; case "新增或更新資料": lblImportActionMessage.Text = "此選項是將資料新增或更新到資料庫中,會針對您的資料來自動判斷新增或更新。"; break; case "覆蓋資料": lblImportActionMessage.Text = "此選項是將資料庫中的資料都先刪除再全部新增"; break; case "刪除資料": lblImportActionMessage.Text = "此選項將依匯入資料中的鍵值刪除資料庫中的現有資料,請您務必小心謹慎使用。"; break; }; }; lstActions.KeyDown += (sender, e) => { if (e.KeyData == System.Windows.Forms.Keys.Delete) if (IsDelete) lstActions.Items.Add("刪除資料"); }; lstActions.SelectedIndex = 0; #endregion }