C#中TreeView類操作全攻略(二) - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- C#中TreeView類操作全攻略(二) (http://www.webasp.net/article/13/12415.htm) |
| -- 作者:未知 -- 發佈日期: 2004-08-19 |
| using System;
using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using com.prm.client.tools; using System.Data.OracleClient; //using com.prm.client.common; namespace com.prm.client.forms { /// <summary> /// SM_AddNewFunction 的摘要說明。 /// </summary> public class SM_AddNewFunction: 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; //用來保存數字字典功能類別的數據 ClientDictionary[] DIC_funcType; //用來保存Connection屬性 private OracleConnection funcTableConn; //用來保存新增加的記錄的主鍵(功能ID) private long newFuncID; //只讀屬性,用來讀取新增加的記錄的主鍵(功能ID) //public long NewFuncID {get {return newFuncID;}} //用來保存新增加的功能記錄 private FunctionTable newFuncItem; public FunctionTable NewFuncItem {get {return newFuncItem;}} /// <summary> /// 必需的設計器變量。 /// </summary> private System.ComponentModel.Container components = null; /// <summary> /// 構造函數,通過參數dic_funcType對窗口進行初始化值,通過參數fatherID得到 /// 新增加的功能的上級功能ID /// </summary> public SM_AddNewFunction(long fatherID,ClientDictionary[] dic_funcType) { // // Windows 窗體設計器支持所必需的 // InitializeComponent(); newFuncItem=new FunctionTable(); newFuncItem.funcFatherID=fatherID; //初始化ID為-1,如果新增成功則將重新賦值 newFuncItem.funcID=-1; 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; } /// <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_AddNewFunction)); 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.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); 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.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); 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.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(30)), ((System.Byte)(66)), ((System.Byte)(94))); 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_AddNewFunction // 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_AddNewFunction"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "新增功能"; this.ResumeLayout(false); } #endregion /// <summary> /// 按確定按鈕後,先檢查輸入的數據的合法性; /// 接著根據輸入對變量newFuncItem進行相應的賦值,然後調用InsertFuncItem過程在功能表中增加一條記錄 /// </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.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.funcID=QueryNextFuncID(); //如果新生成的ID為0則表示沒有成功自動生成新ID,應該返回,不再執行增加操作。 if(newFuncItem.funcID==0) return; 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=""; newFuncItem.funcVer=""; InsertFuncItem(newFuncItem); this.Close(); } /// <summary> ///輸出自動生成的ID號,如果生成失敗則輸出0 /// </summary> private long QueryNextFuncID() { funcTableConn.Open (); OracleCommand mySelectCmd= new OracleCommand(); mySelectCmd.Connection = funcTableConn; mySelectCmd.CommandText = "select SEQ_功能.nextval from dual"; mySelectCmd.CommandType = CommandType.Text ; long nextID=0; try { OracleDataReader myReader = mySelectCmd.ExecuteReader(); myReader.Read(); nextID= myReader.GetInt64(0); myReader.Close(); } catch(Exception ex) { MessageBox.Show("查詢時出現錯誤:"+ex.ToString()); } finally { funcTableConn.Close ( ) ; } return nextID; } /// <summary> /// 在功能表中插入一條新記錄,利用了回滾功能,即如果插入不成功則功能表 /// 恢復為插入前的狀態 /// </summary> /// <param name="newItem">要插入的新紀錄的信息</param> private void InsertFuncItem(FunctionTable newItem) { funcTableConn.Open(); System.Data.OracleClient.OracleTransaction myTran = funcTableConn.BeginTransaction (); try { OracleCommand cmd = new OracleCommand (); cmd.CommandText = "INSERT INTO 功能 (功能ID,功能標識,功能名稱,功能簡述, 所屬窗體,有無界面,功能類別,功能體,上級功能ID,可否展顯,版本號) values ('" +newItem.funcID+"', '" +newItem.funcTag+"', '" +newItem.funcName+"', '" +newItem.funcDetail+"', '" +newItem.funcBelongTo+"', '" +newItem.funcIsInterface+"', '" +newItem.funcType+"', '" +newItem.funcEntity+"', '" +newItem.funcFatherID+"', '" +newItem.funcIsExpand+"', '" +newItem.funcVer+"')"; 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) { //如果點擊取消的話則newFuncItem.funcID賦值為-1 newFuncItem.funcID=-1; this.Close(); } } } |
| webasp.net |