using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using WebLib; using Newtonsoft.Json; namespace Education.Forms.領據系統 { public partial class 非講師 : FormBase { private DAC_非講師 Dao非講師; private bool canExport = false; protected override void OnInit(EventArgs e) { base.OnInit(e); Dao非講師 = new DAC_非講師(conn); } protected void Page_Load(object sender, EventArgs e) { FunctionName = "非講師/名人基本資料"; // 設定 Form 的 enctype 為 multipart/form-data,才能上傳檔案 Page.Form.Attributes["enctype"] = "multipart/form-data"; Form_View = fv非講師; Grid_View = gv非講師; FormView_DataSource = ds非講師Form; GridView_DataSource = ds非講師Grid; AddTabButton(MultiView1, 0, btnTab1); AddTabButton(MultiView1, 1, btnTab2); AddTabButton(MultiView1, 2, btnTab3); AddTabButton(MultiView1, 3, btnTab4); RegisterPostbackTrigger(btnExport); RegisterPostbackTrigger(btn下載範本); RegisterPostbackTrigger(btn匯入); RegisterPostbackTrigger(btn上傳檔案); InitJSVar(); GetRights(); if (!IsPostBack) { ActivateTab(MultiView1, 0); } else { Grid_View.DataBind(); Form_View.DataBind(); } } protected void GetRights() { canExport = new MWEB().CheckRight(ProgramID.匯出基本資料, WRightName.Execute, UserId); hfCanExport.Value = (canExport ? "Y" : ""); } protected void btnSearch_Click(object sender, EventArgs e) { Grid_View.PageIndex = 0; Grid_View.DataBind(); } protected void btnClear_Click(object sender, EventArgs e) { txt編號_Search.Text = ""; txt姓名_Search.Text = ""; txt身分證字號_Search.Text = ""; txt聯絡電話_Search.Text = ""; txt電子郵件_Search.Text = ""; } protected override void GridView_SelectedIndexChanged(object sender, EventArgs e) { base.GridView_SelectedIndexChanged(sender, e); ActivateTab(MultiView1, 1); } protected void cv電子郵件_ServerValidate(object source, ServerValidateEventArgs args) { args.IsValid = IsValidEmail(args.Value); } protected void cv身分證字號_ServerValidate(object source, ServerValidateEventArgs args) { string 編號 = Form_View.DataItem == null ? "" : (Form_View.DataItem as 非講師Item).編號; args.IsValid = !Dao非講師.Is身份證字號Dulicate(編號, args.Value); } protected void ds非講師Grid_ObjectCreating(object sender, ObjectDataSourceEventArgs e) { e.ObjectInstance = Dao非講師; } protected void ds非講師Form_ObjectCreating(object sender, ObjectDataSourceEventArgs e) { e.ObjectInstance = Dao非講師; } protected void btnExport_Click(object sender, EventArgs e) { if (!canExport) { return; } var export_columns = new List(); for (var i = 0; i < cblExport.Items.Count; i++) { if (cblExport.Items[i].Selected) export_columns.Add(cblExport.Items[i].Value); } var report = new Report.非講師匯出() { data = Dao非講師.SelectPage(true, 0, Int32.MaxValue, txt編號_Search.Text, txt姓名_Search.Text, txt身分證字號_Search.Text, txt聯絡電話_Search.Text, txt電子郵件_Search.Text), export_columns = export_columns }; MemoryStream ms = report.DoReport(); ResponseWriteStream(ms, String.Format("{0:yyyyMMdd_HHmmss}_非講師資料匯出.xlsx", PublicVariable.TaiwanNow)); } protected void btn下載範本_Click(object sender, EventArgs e) { var ms = new 非講師匯入().ImportExample(); ResponseWriteStream(ms, "非講師資料匯入範本.xlsx"); } protected void btn匯入_Click(object sender, EventArgs e) { if (String.IsNullOrEmpty(DAC.GetString(Session["非講師匯入檔案"]))) { ltl匯入結果.Text = "請先上傳匯入檔案"; return; } try { var import = new 非講師匯入(); import.Connection = conn; var importResult = import.Import<非講師Item>( DAC.GetString(Session["非講師匯入檔案"]), out string message); ltl匯入結果.Text = message; } catch (Exception ex) { ltl匯入結果.Text = "資料匯入失敗: " + ex.Message; } } protected void btn上傳檔案_Click(object sender, EventArgs e) { // 檔案上傳 if (fu匯入檔案.HasFile) { ltl檢查結果.Text = ""; try { var fileName = $"{PublicVariable.TaiwanNow:yyyyMMdd_HHmmss}_{fu匯入檔案.PostedFile.FileName}"; var fullFileName = Path.Combine(ImportBase.ImportFilePath, fileName); fu匯入檔案.PostedFile.SaveAs(fullFileName); Session["非講師匯入檔案"] = fullFileName; var import = new 非講師匯入(); var checkErrors = import.Validate(fullFileName, typeof(非講師Item), out int rowCount); if (checkErrors.Count == 0) { ltl檢查結果.Text = $"上傳檔案 {fu匯入檔案.PostedFile.FileName} 上傳成功並通過檢查
共有 {rowCount} 筆資料
請點擊匯入按鈕執行匯入。"; } else { ltl檢查結果.Text = $"上傳檔案 {fu匯入檔案.PostedFile.FileName} 上傳成功,但有以下錯誤:
{string.Join("
", checkErrors.ToArray())}"; } } catch (Exception ex) { ltl檢查結果.Text = "檔案上傳失敗: " + ex.Message; } } else { ltl檢查結果.Text = "請選擇要上傳的檔案"; } } protected override void AfterChangeTab() { base.AfterChangeTab(); InitJSVar(); } private void InitJSVar() { if (Grid_View.SelectedDataKey != null) { var 講師編號 = DAC.GetString(Grid_View.SelectedDataKey["編號"]); var 講師姓名 = string.Empty; var 講師 = Dao非講師.SelectOne(講師編號).FirstOrDefault(); if (講師 != null) 講師姓名 = 講師.姓名; ScriptManager.RegisterClientScriptBlock(Page, Page.GetType(), "Init", $@"V人員類別 = '非講師'; V講師編號 = '{Grid_View.SelectedDataKey["編號"]}'; V講師姓名 = '{講師姓名}';", true); } } } }