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

333 lines
14 KiB
C#

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebLib;
namespace Education.Forms.辦訓狀況
{
public partial class 教學日誌處理 : FormBase
{
private DAC_訓練課程內容 Dao訓練課程內容;
private DAC_教學日誌 Dao教學日誌;
private int 課程企劃ID;
private int 課程序號;
private bool 主簽核已核准 = false;
protected void Page_Load(object sender, EventArgs e)
{
FunctionName = "教學日誌暨異常狀況登錄";
Dao訓練課程內容 = new DAC_訓練課程內容(conn);
Dao教學日誌 = new DAC_教學日誌(conn);
Form_View = FormView1;
FormView_DataSource = ds教學日誌;
if (IsPostBack)
{
Form_View.DataBind();
}
Form_View.Visible = (訓練企劃搜尋.訓練企劃編號 > 0
&& ddl課程內容.SelectedValue != null && ddl課程內容.SelectedValue.Length > 0);
送簽1.Visible = Form_View.Visible;
送簽2.Visible = Form_View.Visible;
}
protected void ds已上課_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = Dao訓練課程企劃;
}
protected void ds課程內容_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
{
e.ObjectInstance = Dao訓練課程內容;
}
protected void btn查詢1_Click(object sender, EventArgs e)
{
if (訓練企劃搜尋.訓練企劃編號 == 0)
{
Panel1.Visible = false;
Panel2.Visible = false;
lbMessage.Text = "請選擇課程企劃";
return;
}
Panel1.Visible = true;
ddl課程內容.DataBind();
Panel2.Visible = ddl課程內容.Items.Count > 0;
}
protected void btn查詢2_Click(object sender, EventArgs e)
{
Form_View.ChangeMode(FormViewMode.ReadOnly);
Form_View.DataBind();
}
protected override void FormView_DataBound(object sender, EventArgs e)
{
if (!Form_View.Visible)
return;
//if (Form_View.PageCount == 0)
//{
// if (Form_View.CurrentMode != FormViewMode.Insert)
// {
// Form_View.ChangeMode(FormViewMode.Insert);
// Form_View.DataBind();
// return;
// }
//}
課程企劃ID = 訓練企劃搜尋.訓練企劃編號;
課程序號 = DAC.GetInt32(ddl課程內容.SelectedValue);
base.FormView_DataBound(sender, e);
}
private void 顯示課程內容相關資料()
{
訓練課程內容List d = Dao訓練課程內容.SelectOne(課程企劃ID, 課程序號);
if (d.Count > 0)
{
if (FindControl<ITextControl>(Form_View, "lb節次") != null)
FindControl<ITextControl>(Form_View, "lb節次").Text = d[0].節次.ToString();
if (FindControl<ITextControl>(Form_View, "lb講師") != null)
FindControl<ITextControl>(Form_View, "lb講師").Text = Dao訓練課程企劃.Select選定講師名稱(課程企劃ID, 課程序號);
}
}
protected override void FormView_InsertDataBound(object sender, EventArgs e)
{
base.FormView_InsertDataBound(sender, e);
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
if (d.Count == 0)
return;
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
FindControl<HiddenField>(Form_View, "hf課程序號").Value = ddl課程內容.SelectedValue;
FindControl<DateTextBox>(Form_View, "txt填表日期").Value = DateTime.UtcNow.AddHours(8).Date;
FindControl<ITextControl>(Form_View, "txt填表人員").Text = UserId;
FindControl<ITextControl>(Form_View, "lb填表人員X").Text = Get員工姓名(UserId);
顯示課程內容相關資料();
送簽1.Visible = false;
送簽2.Visible = false;
btn填寫追蹤.Visible = false;
pnl追蹤編輯.Visible = false;
}
protected override void FormView_EditDataBound(object sender, EventArgs e)
{
base.FormView_EditDataBound(sender, e);
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
if (d.Count == 0)
return;
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
顯示課程內容相關資料();
送簽1.Visible = false;
送簽2.Visible = false;
btn填寫追蹤.Visible = false;
pnl追蹤編輯.Visible = false;
}
private void Set新增欄位顯示()
{
string[] 新欄位ID = { "lb觀察01", "lb觀察02", "lb觀察03", "lb觀察04", "lb觀察05", "lb觀察06", "lb觀察07", "lb觀察08", "lb觀察說明", "lb觀察紀錄1", "lb觀察紀錄2", "lb是否需後續追蹤", "lb追蹤事項", "lb處理結果追蹤" };
foreach (string 控制項ID in 新欄位ID)
{
Label lb = FindControl<Label>(Form_View, 控制項ID);
if (lb != null && String.IsNullOrEmpty(lb.Text.Trim()))
{
lb.Text = "2026年新增欄位";
lb.ForeColor = System.Drawing.Color.Gray;
}
}
}
protected override void FormView_ReadOnlyDataBound(object sender, EventArgs e)
{
base.FormView_ReadOnlyDataBound(sender, e);
顯示課程內容相關資料();
Set新增欄位顯示();
btn填寫追蹤.Visible = false;
pnl追蹤編輯.Visible = false;
主簽核已核准 = false;
if (Form_View.SelectedValue != null)
{
訓練課程企劃List d = Dao訓練課程企劃.SelectOne(課程企劃ID);
if (d.Count == 0)
return;
FindControl<ITextControl>(Form_View, "lb課程企劃編號").Text = d[0].顯示編號;
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
送簽1.表單ID = 表單ID;
送簽1.訓練課程企劃編號 = 課程企劃ID;
送簽1.編號2 = 課程序號;
送簽1.表單ID格式 = String.Format("[{0}] {1}<br>[{2}] {3}",
d[0].顯示編號, d[0].訓練名稱, 課程序號, ddl課程內容.SelectedItem.Text);
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
送簽1.可送簽 = data[0].填表人員 == UserId;
送簽1.Refresh();
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
LinkButton btnUpdate = FindControl<LinkButton>(Form_View, "btnUpdate");
if (btnUpdate != null)
btnUpdate.Visible = !已送簽且未撤單(主簽核狀態);
bool 主單已送簽 = 已送簽且未撤單(主簽核狀態);
主簽核已核准 = 主簽核狀態 != null
&& 主簽核狀態.最終結果 == "Y"
&& 主簽核狀態.應簽關數.CompareTo("D") != 0;
表單簽核主檔 trackingStatus = Dao表單簽核主檔.GetLastStatus("處理結果追蹤", 表單ID);
bool 追蹤已核准 = trackingStatus != null
&& trackingStatus.最終結果 == "Y"
&& trackingStatus.應簽關數 != "D";
if (主單已送簽)
{
送簽2.表單ID = 表單ID;
送簽2.訓練課程企劃編號 = 課程企劃ID;
送簽2.編號2 = 課程序號;
送簽2.表單ID格式 = String.Format("[{0}] {1}<br>[{2}] {3}",
d[0].顯示編號, d[0].訓練名稱, 課程序號, ddl課程內容.SelectedItem.Text);
送簽2.可送簽 = data[0].填表人員 == UserId;
送簽2.Refresh();
btn填寫追蹤.Visible = data[0].填表人員 == UserId && !追蹤已核准;
}
}
送簽1.Visible = Form_View.SelectedValue != null;
送簽2.Visible = Form_View.SelectedValue != null
&& 已送簽且未撤單(Dao表單簽核主檔.GetLastStatus(
"教學日誌暨異常狀況", String.Format("{0}|{1}", 課程企劃ID, 課程序號)));
}
protected void btn填寫追蹤_Click(object sender, EventArgs e)
{
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
if (data.Count == 0 || data[0].填表人員 != UserId || !已送簽且未撤單(主簽核狀態))
{
lbMessage.Text = "教學日誌暨異常狀況尚未送簽、已撤單或目前使用者無權限填寫。";
return;
}
txt追蹤內容.Text = data[0].處理結果追蹤;
btn填寫追蹤.Visible = false;
pnl追蹤編輯.Visible = true;
送簽1.Visible = false;
送簽2.Visible = false;
}
protected void btn追蹤存檔_Click(object sender, EventArgs e)
{
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
表單簽核主檔 主簽核狀態 = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
if (data.Count == 0 || data[0].填表人員 != UserId || !已送簽且未撤單(主簽核狀態))
{
lbMessage.Text = "教學日誌暨異常狀況尚未送簽、已撤單或目前使用者無權限填寫。";
pnl追蹤編輯.Visible = false;
Form_View.DataBind();
return;
}
表單簽核主檔 trackingStatus = Dao表單簽核主檔.GetLastStatus("處理結果追蹤", 表單ID);
if (trackingStatus != null && trackingStatus.最終結果 == "Y" && trackingStatus.應簽關數 != "D")
{
lbMessage.Text = "處理結果追蹤已完成簽核,不可修改。";
pnl追蹤編輯.Visible = false;
Form_View.DataBind();
return;
}
if (String.IsNullOrEmpty(txt追蹤內容.Text.Trim()))
{
lbMessage.Text = "請輸入處理結果追蹤。";
return;
}
Dao教學日誌.Update處理結果追蹤(課程企劃ID, 課程序號, txt追蹤內容.Text);
pnl追蹤編輯.Visible = false;
Form_View.DataBind();
}
protected void btn追蹤取消_Click(object sender, EventArgs e)
{
pnl追蹤編輯.Visible = false;
Form_View.DataBind();
}
protected void FormView1_ItemInserting(object sender, FormViewInsertEventArgs e)
{
e.Values["課程企劃編號"] = 課程企劃ID;
e.Values["處理結果追蹤"] = "";
}
protected void FormView1_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
string 表單ID = String.Format("{0}|{1}", 課程企劃ID, 課程序號);
表單簽核主檔 status = Dao表單簽核主檔.GetLastStatus("教學日誌暨異常狀況", 表單ID);
if (已送簽且未撤單(status))
{
e.Cancel = true;
lbMessage.Text = "教學日誌暨異常狀況已送簽,不可更正。";
Form_View.ChangeMode(FormViewMode.ReadOnly);
Form_View.DataBind();
return;
}
教學日誌List data = ds教學日誌.Select() as 教學日誌List;
if (data.Count > 0)
e.NewValues["處理結果追蹤"] = data[0].處理結果追蹤;
}
protected void cv觀察說明_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = !String.IsNullOrEmpty(FindFormValue(source, "txt觀察說明").Trim());
}
protected void cv異常情形_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = FindFormValue(source, "ddl有無異常事項") == "0"
|| !String.IsNullOrEmpty(FindFormValue(source, "txt異常情形").Trim());
}
protected void cv追蹤事項_ServerValidate(object source, ServerValidateEventArgs args)
{
args.IsValid = FindFormValue(source, "ddl是否需後續追蹤") == "0"
|| !String.IsNullOrEmpty(FindFormValue(source, "txt追蹤事項").Trim());
}
private bool 已送簽且未撤單(表單簽核主檔 status)
{
return status != null
&& !(status.應簽關數 == "D" && status.已簽關數 == "D");
}
protected void ds課程內容_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
送簽1.Visible = false;
送簽2.Visible = false;
}
}
}