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();
}
}
}