C#中TreeView類操作全攻略(三) - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- C#中TreeView類操作全攻略(三) (http://www.webasp.net/article/13/12416.htm) |
| -- 作者:未知 -- 發佈日期: 2004-08-19 |
| using System;
using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using com.prm.client.tools; using System.Data.OracleClient; //using com.prm.client.common; namespace com.prm.client.forms { /// <summary> /// SM_EditFunction 的摘要說明。 /// </summary> public class SM_EditFunction: System.Windows.Forms.Form { private System.Windows.Forms.Label lbl_Name; private System.Windows.Forms.TextBox txt_Name; private System.Windows.Forms.Label lbl_Tag; private System.Windows.Forms.TextBox txt_Tag; private System.Windows.Forms.CheckBox ckb_IsInterface; private System.Windows.Forms.Label lbl_IsInterface; private System.Windows.Forms.Label lbl_Type; private System.Windows.Forms.Label lbl_FunEntity; private System.Windows.Forms.ComboBox cbo_Type; private System.Windows.Forms.TextBox txt_FunEntity; private System.Windows.Forms.Label lbl_BelongTo; private System.Windows.Forms.TextBox txt_BelongTo; private System.Windows.Forms.TextBox txt_Detail; private System.Windows.Forms.Label lbl_Detail; private System.Windows.Forms.Button btn_Confirm; private System.Windows.Forms.Button btn_Cancel; private System.Windows.Forms.Button btn_Help; //用來保存原始的功能記錄 private FunctionTable oriFuncItem; //用來保存數字字典功能類別的數據 ClientDictionary[] DIC_funcType; //用來保存Connection屬性 private OracleConnection funcTableConn; //用來保存修改後的記錄 private FunctionTable newFuncItem; public FunctionTable NewFuncItem {get {return newFuncItem;}} //用來判斷是否用戶進行了修改 private bool isEdit=false; public bool IsEdit {get {return isEdit;}} /// <summary> /// 必需的設計器變量。 /// </summary> private System.ComponentModel.Container components = null; /// <summary> /// 構造函數,通過editFuncItem參數和dic_funcType對窗口進行初始化值 /// </summary> public SM_EditFunction(FunctionTable editFuncItem,ClientDictionary[] dic_funcType) { // // Windows 窗體設計器支持所必需的 // InitializeComponent(); //用參數值對本窗口相應的變量進行賦值保存 oriFuncItem=editFuncItem; DIC_funcType=dic_funcType; const string VALUEMEMBER="valueMember",DISPLAYMEMBER="displayMember",NULLTEXT=""; cbo_Type.DataSource = DIC_funcType; cbo_Type.ValueMember = VALUEMEMBER; cbo_Type.DisplayMember = DISPLAYMEMBER; DataAccessObject funcTableAccessObject=new DataAccessObject(); funcTableConn=funcTableAccessObject.Connection; this.txt_Name.Text=oriFuncItem.funcName; this.txt_Tag.Text=oriFuncItem.funcTag; if (oriFuncItem.funcIsInterface =="0") { this.ckb_IsInterface.Checked=false; } else { this.ckb_IsInterface.Checked=true; } this.cbo_Type.SelectedValue=oriFuncItem.funcType; this.txt_FunEntity.Text=oriFuncItem.funcEntity; this.txt_BelongTo.Text=oriFuncItem.funcBelongTo; this.txt_Detail.Text=oriFuncItem.funcDetail; } /// <summary> /// 清理所有正在使用的資源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if(components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows 窗體設計器生成的代碼 /// <summary> /// 設計器支持所需的方法 - 不要使用代碼編輯器修改 /// 此方法的內容。 /// </summary> private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(SM_EditFunction)); this.lbl_Name = new System.Windows.Forms.Label(); this.lbl_Tag = new System.Windows.Forms.Label(); this.lbl_Type = new System.Windows.Forms.Label(); this.lbl_FunEntity = new System.Windows.Forms.Label(); this.lbl_BelongTo = new System.Windows.Forms.Label(); this.txt_Name = new System.Windows.Forms.TextBox(); this.txt_Tag = new System.Windows.Forms.TextBox(); this.cbo_Type = new System.Windows.Forms.ComboBox(); this.txt_BelongTo = new System.Windows.Forms.TextBox(); this.txt_Detail = new System.Windows.Forms.TextBox(); this.lbl_Detail = new System.Windows.Forms.Label(); this.ckb_IsInterface = new System.Windows.Forms.CheckBox(); this.btn_Confirm = new System.Windows.Forms.Button(); this.btn_Cancel = new System.Windows.Forms.Button(); this.btn_Help = new System.Windows.Forms.Button(); this.lbl_IsInterface = new System.Windows.Forms.Label(); this.txt_FunEntity = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // lbl_Name // this.lbl_Name.Location = new System.Drawing.Point(56, 24); this.lbl_Name.Name = "lbl_Name"; this.lbl_Name.Size = new System.Drawing.Size(48, 23); this.lbl_Name.TabIndex = 0; this.lbl_Name.Text = "名稱:"; // // lbl_Tag // this.lbl_Tag.Location = new System.Drawing.Point(56, 56); this.lbl_Tag.Name = "lbl_Tag"; this.lbl_Tag.Size = new System.Drawing.Size(48, 23); this.lbl_Tag.TabIndex = 1; this.lbl_Tag.Text = "標識:"; // // lbl_Type // this.lbl_Type.Location = new System.Drawing.Point(56, 112); this.lbl_Type.Name = "lbl_Type"; this.lbl_Type.Size = new System.Drawing.Size(48, 23); this.lbl_Type.TabIndex = 2; this.lbl_Type.Text = "類別:"; // // lbl_FunEntity // this.lbl_FunEntity.Location = new System.Drawing.Point(32, 144); this.lbl_FunEntity.Name = "lbl_FunEntity"; this.lbl_FunEntity.Size = new System.Drawing.Size(72, 23); this.lbl_FunEntity.TabIndex = 3; this.lbl_FunEntity.Text = " 功能體:"; // // lbl_BelongTo // this.lbl_BelongTo.Location = new System.Drawing.Point(8, 176); this.lbl_BelongTo.Name = "lbl_BelongTo"; this.lbl_BelongTo.Size = new System.Drawing.Size(96, 23); this.lbl_BelongTo.TabIndex = 4; this.lbl_BelongTo.Text = "所屬窗口標識:"; // // txt_Name // this.txt_Name.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); this.txt_Name.Location = new System.Drawing.Point(104, 16); this.txt_Name.Name = "txt_Name"; this.txt_Name.Size = new System.Drawing.Size(152, 21); this.txt_Name.TabIndex = 5; this.txt_Name.Text = ""; // // txt_Tag // this.txt_Tag.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); this.txt_Tag.Location = new System.Drawing.Point(104, 48); this.txt_Tag.Name = "txt_Tag"; this.txt_Tag.Size = new System.Drawing.Size(152, 21); this.txt_Tag.TabIndex = 6; this.txt_Tag.Text = ""; // // cbo_Type // this.cbo_Type.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.cbo_Type.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); this.cbo_Type.Location = new System.Drawing.Point(104, 104); this.cbo_Type.Name = "cbo_Type"; this.cbo_Type.Size = new System.Drawing.Size(152, 20); this.cbo_Type.TabIndex = 7; // // txt_BelongTo // this.txt_BelongTo.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); this.txt_BelongTo.Location = new System.Drawing.Point(104, 168); this.txt_BelongTo.Name = "txt_BelongTo"; this.txt_BelongTo.Size = new System.Drawing.Size(152, 21); this.txt_BelongTo.TabIndex = 8; this.txt_BelongTo.Text = ""; // // txt_Detail // this.txt_Detail.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); this.txt_Detail.Location = new System.Drawing.Point(104, 200); this.txt_Detail.Name = "txt_Detail"; this.txt_Detail.Size = new System.Drawing.Size(152, 21); this.txt_Detail.TabIndex = 9; this.txt_Detail.Text = ""; // // lbl_Detail // this.lbl_Detail.Location = new System.Drawing.Point(56, 208); this.lbl_Detail.Name = "lbl_Detail"; this.lbl_Detail.Size = new System.Drawing.Size(48, 23); this.lbl_Detail.TabIndex = 10; this.lbl_Detail.Text = "描述:"; // // ckb_IsInterface // this.ckb_IsInterface.Location = new System.Drawing.Point(104, 72); this.ckb_IsInterface.Name = "ckb_IsInterface"; this.ckb_IsInterface.Size = new System.Drawing.Size(24, 24); this.ckb_IsInterface.TabIndex = 11; // // btn_Confirm // this.btn_Confirm.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btn_Confirm.BackgroundImage"))); this.btn_Confirm.Location = new System.Drawing.Point(40, 240); this.btn_Confirm.Name = "btn_Confirm"; this.btn_Confirm.Size = new System.Drawing.Size(64, 22); this.btn_Confirm.TabIndex = 12; this.btn_Confirm.Text = "確 定"; this.btn_Confirm.Click += new System.EventHandler(this.btn_Confirm_Click); // // btn_Cancel // this.btn_Cancel.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btn_Cancel.BackgroundImage"))); this.btn_Cancel.Location = new System.Drawing.Point(128, 240); this.btn_Cancel.Name = "btn_Cancel"; this.btn_Cancel.Size = new System.Drawing.Size(64, 22); this.btn_Cancel.TabIndex = 13; this.btn_Cancel.Text = "取 消"; this.btn_Cancel.Click += new System.EventHandler(this.btn_Cancel_Click); // // btn_Help // this.btn_Help.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btn_Help.BackgroundImage"))); this.btn_Help.Location = new System.Drawing.Point(216, 240); this.btn_Help.Name = "btn_Help"; this.btn_Help.Size = new System.Drawing.Size(64, 22); this.btn_Help.TabIndex = 14; this.btn_Help.Text = "幫 助"; // // lbl_IsInterface // this.lbl_IsInterface.Location = new System.Drawing.Point(32, 80); this.lbl_IsInterface.Name = "lbl_IsInterface"; this.lbl_IsInterface.Size = new System.Drawing.Size(72, 23); this.lbl_IsInterface.TabIndex = 15; this.lbl_IsInterface.Text = "有無界面:"; // // txt_FunEntity // this.txt_FunEntity.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); this.txt_FunEntity.Location = new System.Drawing.Point(104, 136); this.txt_FunEntity.Name = "txt_FunEntity"; this.txt_FunEntity.Size = new System.Drawing.Size(152, 21); this.txt_FunEntity.TabIndex = 16; this.txt_FunEntity.Text = ""; // // SM_EditFunction // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(242)), ((System.Byte)(247)), ((System.Byte)(250))); this.ClientSize = new System.Drawing.Size(320, 273); this.Controls.Add(this.txt_FunEntity); this.Controls.Add(this.lbl_IsInterface); this.Controls.Add(this.btn_Help); this.Controls.Add(this.btn_Cancel); this.Controls.Add(this.btn_Confirm); this.Controls.Add(this.ckb_IsInterface); this.Controls.Add(this.lbl_Detail); this.Controls.Add(this.txt_Detail); this.Controls.Add(this.txt_BelongTo); this.Controls.Add(this.cbo_Type); this.Controls.Add(this.txt_Tag); this.Controls.Add(this.txt_Name); this.Controls.Add(this.lbl_BelongTo); this.Controls.Add(this.lbl_FunEntity); this.Controls.Add(this.lbl_Type); this.Controls.Add(this.lbl_Tag); this.Controls.Add(this.lbl_Name); this.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "SM_EditFunction"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "修改功能"; this.ResumeLayout(false); } #endregion /// <summary> /// 按確定按鈕後,先檢查輸入的數據的合法性;接著生成一個FunctionTable類的實例 /// 並根據輸入進行 相應的賦值,接著調用UpdateFuncItem過程對功能表進行相應的修改 /// </summary> private void btn_Confirm_Click(object sender, System.EventArgs e) { if(txt_Name.Text=="") { MessageBox.Show("功能名稱不能為空"); return; } if(txt_Tag.Text=="") { MessageBox.Show("功能標識不能為空"); return; } if(this.txt_FunEntity.Text=="") { MessageBox.Show("功能體不能為空"); return; } newFuncItem=new FunctionTable(); newFuncItem.funcName=txt_Name.Text.Trim(); newFuncItem.funcTag=txt_Tag.Text.Trim(); if(this.ckb_IsInterface.Checked==true) { newFuncItem.funcIsInterface="1"; } else { newFuncItem.funcIsInterface="0"; } newFuncItem.funcType=this.cbo_Type.SelectedValue.ToString().Trim(); newFuncItem.funcEntity=this.txt_FunEntity.Text.Trim(); newFuncItem.funcBelongTo=this.txt_BelongTo.Text.Trim(); newFuncItem.funcDetail=this.txt_Detail.Text.Trim(); newFuncItem.funcIsExpand=oriFuncItem.funcIsExpand; newFuncItem.funcVer=oriFuncItem.funcVer; newFuncItem.funcID=oriFuncItem.funcID; newFuncItem.funcFatherID=oriFuncItem.funcFatherID; UpdateFuncItem(newFuncItem); isEdit=true; this.Close(); } /// <summary> /// 對功能表進行修改,利用了回滾功能,即如果修改不成功則功能表 /// 恢復為修改前的狀態 /// </summary> /// <param name="newItem">要修改的新的紀錄信息</param> private void UpdateFuncItem(FunctionTable newItem) { funcTableConn.Open(); System.Data.OracleClient.OracleTransaction myTran = funcTableConn.BeginTransaction (); try { OracleCommand cmd = new OracleCommand (); cmd.CommandText ="UPDATE 功能 set 功能標識='"+newItem.funcTag +"', 功能名稱='"+newItem.funcName +"', 功能簡述='"+newItem.funcDetail +"', 所屬窗體='"+newItem.funcBelongTo +"', 有無界面='"+newItem.funcIsInterface +"', 功能類別='"+newItem.funcType +"', 功能體='"+newItem.funcEntity +"', 上級功能ID='"+newItem.funcFatherID +"', 可否展顯='"+newItem.funcIsExpand +"', 版本號='"+newItem.funcVer +"' where 功能ID = '"+newItem.funcID+"'"; cmd.Transaction = myTran; cmd.Connection =funcTableConn; cmd.ExecuteNonQuery (); myTran.Commit (); } catch(Exception ee) { try { myTran.Rollback(); } catch (OracleException ex) { if (myTran.Connection != null) { MessageBox.Show ("在回滾時發生 " + ex.GetType() +" 異常!", "警告",System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); } } MessageBox.Show ("發生" + ee.GetType() + "異常\n" +"修改記錄失敗!","警告",System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning); } finally { funcTableConn.Close(); } } private void btn_Cancel_Click(object sender, System.EventArgs e) { //用戶點擊了取消鍵,則表示沒有進行修改 isEdit=false; this.Close(); } } } |
| webasp.net |