using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Linq; using WebLib; namespace Education.Forms.課程企劃 { public partial class PickupMaterial : FormBase { private DAC_訓練課程企劃 Dao課程企劃; private DAC_訓練課程內容 Dao課程內容; private DAC_教材遴選 Dao教材遴選; private int 課程企劃ID; private int 課程序號; protected bool 可異動; protected void Page_Load(object sender, EventArgs e) { FunctionName = "訓練課程企劃書 >> 訓練課程內容 >> 教材評選"; Title = FunctionName; if (!IsPostBack) { hf課程企劃ID.Value = Request["id"]; hf課程序號.Value = Request["class"]; } 課程企劃ID = DAC.GetInt32(hf課程企劃ID.Value); 課程序號 = DAC.GetInt32(hf課程序號.Value); 可異動 = Dao表單簽核主檔.表單可異動("課程企劃", String.Format("{0}", 課程企劃ID)); Dao課程企劃 = new DAC_訓練課程企劃(conn); Dao課程內容 = new DAC_訓練課程內容(conn); Dao教材遴選 = new DAC_教材遴選(conn); btnClearA.OnClientClick = String.Format("clearMaterial(\"{0}\", [{1}], \"{2}\"); return false;", txt教材名稱A.ClientID, Get評選下拉ClientIDs("A"), btnClearA.ClientID); btnClearB.OnClientClick = String.Format("clearMaterial(\"{0}\", [{1}], \"{2}\"); return false;", txt教材名稱B.ClientID, Get評選下拉ClientIDs("B"), btnClearB.ClientID); btnClearC.OnClientClick = String.Format("clearMaterial(\"{0}\", [{1}], \"{2}\"); return false;", txt教材名稱C.ClientID, Get評選下拉ClientIDs("C"), btnClearC.ClientID); if (!IsPostBack) { 填入評選下拉(); UpdateUI(); } UIControl(); (Master as PopupForm).RefreshOpener = true; } private string Get評選下拉ClientIDs(string 教材別) { string[] ids = new string[] { "\"" + 訓練目標相符(教材別).ClientID + "\"", "\"" + 參訓對象符合(教材別).ClientID + "\"", "\"" + 課程大綱相符(教材別).ClientID + "\"", "\"" + 內容正確適切(教材別).ClientID + "\"", "\"" + 學員理解應用(教材別).ClientID + "\"", "\"" + 使用方式清楚(教材別).ClientID + "\"", "\"" + 評選結果(教材別).ClientID + "\"" }; return String.Join(",", ids); } private void 填入評選下拉() { DAC_教材評選選項 選項 = new DAC_教材評選選項(); foreach (string 別 in new[] { "A", "B", "C" }) { 填入下拉(訓練目標相符(別), 選項.Select評選項目ForDropDown()); 填入下拉(參訓對象符合(別), 選項.Select評選項目ForDropDown()); 填入下拉(課程大綱相符(別), 選項.Select評選項目ForDropDown()); 填入下拉(內容正確適切(別), 選項.Select評選項目ForDropDown()); 填入下拉(學員理解應用(別), 選項.Select評選項目ForDropDown()); 填入下拉(使用方式清楚(別), 選項.Select評選項目ForDropDown()); 填入下拉(評選結果(別), 選項.Select評選結果ForDropDown()); } } private void 填入下拉(DropDownList ddl, NameValueList list) { ddl.DataSource = list; ddl.DataTextField = "Name"; ddl.DataValueField = "Value"; ddl.DataBind(); } private DropDownList 訓練目標相符(string 教材別) { return 教材別 == "A" ? ddl訓練目標相符A : 教材別 == "B" ? ddl訓練目標相符B : ddl訓練目標相符C; } private DropDownList 參訓對象符合(string 教材別) { return 教材別 == "A" ? ddl參訓對象符合A : 教材別 == "B" ? ddl參訓對象符合B : ddl參訓對象符合C; } private DropDownList 課程大綱相符(string 教材別) { return 教材別 == "A" ? ddl課程大綱相符A : 教材別 == "B" ? ddl課程大綱相符B : ddl課程大綱相符C; } private DropDownList 內容正確適切(string 教材別) { return 教材別 == "A" ? ddl內容正確適切A : 教材別 == "B" ? ddl內容正確適切B : ddl內容正確適切C; } private DropDownList 學員理解應用(string 教材別) { return 教材別 == "A" ? ddl學員理解應用A : 教材別 == "B" ? ddl學員理解應用B : ddl學員理解應用C; } private DropDownList 使用方式清楚(string 教材別) { return 教材別 == "A" ? ddl使用方式清楚A : 教材別 == "B" ? ddl使用方式清楚B : ddl使用方式清楚C; } private DropDownList 評選結果(string 教材別) { return 教材別 == "A" ? ddl評選結果A : 教材別 == "B" ? ddl評選結果B : ddl評選結果C; } private void UIControl() { btnSave.Visible = 可異動; btnClearA.Visible = 可異動; btnClearB.Visible = 可異動; btnClearC.Visible = 可異動; txt教材名稱A.Enabled = 可異動; txt教材名稱B.Enabled = 可異動; txt教材名稱C.Enabled = 可異動; foreach (string 別 in new[] { "A", "B", "C" }) { 訓練目標相符(別).Enabled = 可異動; 參訓對象符合(別).Enabled = 可異動; 課程大綱相符(別).Enabled = 可異動; 內容正確適切(別).Enabled = 可異動; 學員理解應用(別).Enabled = 可異動; 使用方式清楚(別).Enabled = 可異動; 評選結果(別).Enabled = 可異動; } txt備註.Enabled = 可異動; } private void UpdateUI() { 訓練課程企劃List v1 = Dao課程企劃.SelectOne(課程企劃ID); 訓練課程內容List v2 = Dao課程內容.SelectOne(課程企劃ID, 課程序號); 教材遴選List v3 = Dao教材遴選.SelectOne(課程企劃ID, 課程序號); if (v1.Count > 0) { lb課程企劃.Text = String.Format("[{0}] {1}", v1[0].顯示編號, v1[0].訓練名稱); } if (v2.Count > 0) { lb課程內容.Text = String.Format("[{0}] {1}", v2[0].節次, v2[0].課程名稱); } foreach (string 別 in new[] { "A", "B", "C" }) { string 名稱 = 別 == "A" ? "一" : 別 == "B" ? "二" : "三"; (別 == "A" ? txt教材名稱A : 別 == "B" ? txt教材名稱B : txt教材名稱C).Text = ""; 訓練目標相符(別).SelectedValue = ""; 參訓對象符合(別).SelectedValue = ""; 課程大綱相符(別).SelectedValue = ""; 內容正確適切(別).SelectedValue = ""; 學員理解應用(別).SelectedValue = ""; 使用方式清楚(別).SelectedValue = ""; 評選結果(別).SelectedValue = ""; } txt備註.Text = ""; if (v3.Count > 0) { if (!String.IsNullOrEmpty(v3[0].教材名稱_A)) { txt教材名稱A.Text = v3[0].教材名稱_A; 訓練目標相符("A").SelectedValue = v3[0].訓練目標相符_A; 參訓對象符合("A").SelectedValue = v3[0].參訓對象符合_A; 課程大綱相符("A").SelectedValue = v3[0].課程大綱相符_A; 內容正確適切("A").SelectedValue = v3[0].內容正確適切_A; 學員理解應用("A").SelectedValue = v3[0].學員理解應用_A; 使用方式清楚("A").SelectedValue = v3[0].使用方式清楚_A; 評選結果("A").SelectedValue = v3[0].評選結果_A; } if (!String.IsNullOrEmpty(v3[0].教材名稱_B)) { txt教材名稱B.Text = v3[0].教材名稱_B; 訓練目標相符("B").SelectedValue = v3[0].訓練目標相符_B; 參訓對象符合("B").SelectedValue = v3[0].參訓對象符合_B; 課程大綱相符("B").SelectedValue = v3[0].課程大綱相符_B; 內容正確適切("B").SelectedValue = v3[0].內容正確適切_B; 學員理解應用("B").SelectedValue = v3[0].學員理解應用_B; 使用方式清楚("B").SelectedValue = v3[0].使用方式清楚_B; 評選結果("B").SelectedValue = v3[0].評選結果_B; } if (!String.IsNullOrEmpty(v3[0].教材名稱_C)) { txt教材名稱C.Text = v3[0].教材名稱_C; 訓練目標相符("C").SelectedValue = v3[0].訓練目標相符_C; 參訓對象符合("C").SelectedValue = v3[0].參訓對象符合_C; 課程大綱相符("C").SelectedValue = v3[0].課程大綱相符_C; 內容正確適切("C").SelectedValue = v3[0].內容正確適切_C; 學員理解應用("C").SelectedValue = v3[0].學員理解應用_C; 使用方式清楚("C").SelectedValue = v3[0].使用方式清楚_C; 評選結果("C").SelectedValue = v3[0].評選結果_C; } txt備註.Text = v3[0].備註; } } private bool Validate評選() { string[] 教材名稱 = { txt教材名稱A.Text.Trim(), txt教材名稱B.Text.Trim(), txt教材名稱C.Text.Trim() }; string[] 名稱 = { "一", "二", "三" }; for (int i = 0; i < 3; i++) { if (String.IsNullOrEmpty(教材名稱[i])) continue; string 別 = i == 0 ? "A" : i == 1 ? "B" : "C"; if (String.IsNullOrEmpty(訓練目標相符(別).SelectedValue) || String.IsNullOrEmpty(參訓對象符合(別).SelectedValue) || String.IsNullOrEmpty(課程大綱相符(別).SelectedValue) || String.IsNullOrEmpty(內容正確適切(別).SelectedValue) || String.IsNullOrEmpty(學員理解應用(別).SelectedValue) || String.IsNullOrEmpty(使用方式清楚(別).SelectedValue) || String.IsNullOrEmpty(評選結果(別).SelectedValue)) { ClientShowMessage(String.Format("請完整填寫教材{0}的評選項目與評選結果。", 名稱[i])); return false; } } return true; } protected void btnSave_Click(object sender, EventArgs e) { if (String.IsNullOrEmpty(txt教材名稱A.Text.Trim()) && String.IsNullOrEmpty(txt教材名稱B.Text.Trim()) && String.IsNullOrEmpty(txt教材名稱C.Text.Trim())) { ClientShowMessage("請至少輸入一項教材名稱。"); return; } if (!Validate評選()) return; 教材遴選Item item = Dao教材遴選.SelectOne(課程企劃ID, 課程序號).FirstOrDefault(); if (item == null) { item = new 教材遴選Item() { 課程企劃編號 = 課程企劃ID, 課程序號 = 課程序號, 教材名稱_A = txt教材名稱A.Text, 訓練目標相符_A = Get選擇值(訓練目標相符("A")), 參訓對象符合_A = Get選擇值(參訓對象符合("A")), 課程大綱相符_A = Get選擇值(課程大綱相符("A")), 內容正確適切_A = Get選擇值(內容正確適切("A")), 學員理解應用_A = Get選擇值(學員理解應用("A")), 使用方式清楚_A = Get選擇值(使用方式清楚("A")), 評選結果_A = Get選擇值(評選結果("A")), 教材名稱_B = txt教材名稱B.Text, 訓練目標相符_B = Get選擇值(訓練目標相符("B")), 參訓對象符合_B = Get選擇值(參訓對象符合("B")), 課程大綱相符_B = Get選擇值(課程大綱相符("B")), 內容正確適切_B = Get選擇值(內容正確適切("B")), 學員理解應用_B = Get選擇值(學員理解應用("B")), 使用方式清楚_B = Get選擇值(使用方式清楚("B")), 評選結果_B = Get選擇值(評選結果("B")), 教材名稱_C = txt教材名稱C.Text, 訓練目標相符_C = Get選擇值(訓練目標相符("C")), 參訓對象符合_C = Get選擇值(參訓對象符合("C")), 課程大綱相符_C = Get選擇值(課程大綱相符("C")), 內容正確適切_C = Get選擇值(內容正確適切("C")), 學員理解應用_C = Get選擇值(學員理解應用("C")), 使用方式清楚_C = Get選擇值(使用方式清楚("C")), 評選結果_C = Get選擇值(評選結果("C")), 備註 = txt備註.Text }; Dao教材遴選.InsertOne(item); } else { item.教材名稱_A = txt教材名稱A.Text; item.訓練目標相符_A = Get選擇值(訓練目標相符("A")); item.參訓對象符合_A = Get選擇值(參訓對象符合("A")); item.課程大綱相符_A = Get選擇值(課程大綱相符("A")); item.內容正確適切_A = Get選擇值(內容正確適切("A")); item.學員理解應用_A = Get選擇值(學員理解應用("A")); item.使用方式清楚_A = Get選擇值(使用方式清楚("A")); item.評選結果_A = Get選擇值(評選結果("A")); item.教材名稱_B = txt教材名稱B.Text; item.訓練目標相符_B = Get選擇值(訓練目標相符("B")); item.參訓對象符合_B = Get選擇值(參訓對象符合("B")); item.課程大綱相符_B = Get選擇值(課程大綱相符("B")); item.內容正確適切_B = Get選擇值(內容正確適切("B")); item.學員理解應用_B = Get選擇值(學員理解應用("B")); item.使用方式清楚_B = Get選擇值(使用方式清楚("B")); item.評選結果_B = Get選擇值(評選結果("B")); item.教材名稱_C = txt教材名稱C.Text; item.訓練目標相符_C = Get選擇值(訓練目標相符("C")); item.參訓對象符合_C = Get選擇值(參訓對象符合("C")); item.課程大綱相符_C = Get選擇值(課程大綱相符("C")); item.內容正確適切_C = Get選擇值(內容正確適切("C")); item.學員理解應用_C = Get選擇值(學員理解應用("C")); item.使用方式清楚_C = Get選擇值(使用方式清楚("C")); item.評選結果_C = Get選擇值(評選結果("C")); item.備註 = txt備註.Text; Dao教材遴選.UpdateOne(item); } UpdateUI(); ClientShowMessage("儲存成功!"); } private string Get選擇值(DropDownList ddl) { return String.IsNullOrEmpty(ddl.SelectedValue) ? null : ddl.SelectedValue; } } }