Files
thinkyu/branches/1150807/Forms/領據系統/非講師.aspx.cs
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

217 lines
7.6 KiB
C#

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<string>();
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} 上傳成功並通過檢查<br/>共有 {rowCount} 筆資料<br/>請點擊匯入按鈕執行匯入。";
}
else
{
ltl檢查結果.Text = $"上傳檔案 {fu匯入檔案.PostedFile.FileName} 上傳成功,但有以下錯誤:<br/>{string.Join("<br/>", 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);
}
}
}
}