using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using WebLib; namespace Education.Forms.選課 { public partial class 選課查詢 : FormBase { protected void Page_Load(object sender, EventArgs e) { FunctionName = "報名查詢及取消報名"; if (IsPostBack) { GridView1.DataBind(); } } protected void ds選課_ObjectCreating(object sender, ObjectDataSourceEventArgs e) { e.ObjectInstance = Dao課程報名; } protected void ds選課_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) { e.InputParameters["學員編號"] = UserId; e.InputParameters["僅已簽核"] = IsBackend; e.InputParameters["僅必修"] = false; } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { if (!(e.Row.DataItem is DataRowView dataItem)) return; TableCell cell = e.Row.Cells[6]; Literal lt狀態 = FindControl(cell, "lb狀態"); lt狀態.Text = ""; int 課程編號 = DAC.GetInt32(dataItem["訓練課程編號"]); string 報名狀態 = DAC.GetString(dataItem["報名狀態"]); DateTime 訓練日期 = DAC.GetDateTime(dataItem["訓練日期"]); int 取消報名截止期限 = DAC.GetInt32(dataItem["取消報名截止期限"]); // 已過訓練日期,狀態均不顯示 if (訓練日期 < DateTime.UtcNow.AddHours(8).Date) return; // 已取消,狀態均不顯示 if (報名狀態 != "Y" && 報名狀態 != "R") return; // 選修的,未到取消報名截止期限,可取消 if (報名狀態 == "Y") { if (訓練日期.AddDays(-取消報名截止期限) > DateTime.UtcNow.AddHours(8).Date) { cell.FindControl("btn取消報名").Visible = true; } else { lt狀態.Text += "
已超過取消報名截止期限
"; } } // 尚未報名 if (報名狀態 == "S") { } } } protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) { // 處理報名動作 if (e.CommandName == "取消報名") { // 1. 寫一筆報名紀錄 int 訓練課程編號 = DAC.GetInt32(e.CommandArgument); Dao課程報名.取消報名(UserId, 訓練課程編號, UserId); // 2. 發送報名確認郵件 訓練課程企劃List values = Dao訓練課程企劃.SelectOne(訓練課程編號); string 電子郵件 = Dao員工.Get電子郵件(UserId); string 員工姓名 = Dao員工.Get員工姓名(UserId); if (values.Count > 0) { 發送郵件 發送郵件 = new 發送郵件(); 發送郵件.Context = this.Context; 發送郵件.發送取消報名郵件(員工姓名, 電子郵件, values[0].訓練日期, values[0].訓練日期迄, values[0].訓練名稱); } GridView1.DataBind(); } } } }