using AIMS; using AIMSBLL; using AIMSExtension; using AIMSModel; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace DataDictionary.UI { public partial class frmAnaesthesiaMethod : Form { /// /// 麻醉字典集合 /// private List list; private EditState state = EditState.BROWSE; /// /// 编号 /// public int pid; public frmAnaesthesiaMethod() { InitializeComponent(); } private void frmAnaesthesiaMethod_Load(object sender, EventArgs e) { Initial(); //FullTreeView(list); ControlExtension.EnabledControl(panel1, false); } /// /// 初始化TreeView /// private void Initial() { list = BAnaesthesiaMethod.Select(" IsValid=1 ", new ParameterList(), RecursiveType.None, 0); tvDictionary.Nodes.Clear(); //设置根节点 TreeNode rootNode = new TreeNode("麻醉方式"); FillTvTreeNode(rootNode, 0); tvDictionary.Nodes.Add(rootNode); tvDictionary.Nodes[0].Expand(); //初始化ComboBox List sList = list; sList.Insert(0, new AnaesthesiaMethod() { Id = -1, Name = "" }); cboDict.DataSource = sList; cboDict.DisplayMember = "Name"; cboDict.ValueMember = "Id"; } private void FillTvTreeNode(TreeNode node, int ParentId) { foreach (AnaesthesiaMethod sAnaes in list) { if (sAnaes.ParentId == ParentId) { TreeNode sNode = new TreeNode(sAnaes.Name); sNode.Tag = sAnaes; FillTvTreeNode(sNode, sAnaes.Id.Value); node.Nodes.Add(sNode); } } } private void tsbExit_Click(object sender, EventArgs e) { this.Close(); } private void FullDgv(AnaesthesiaMethod anaes) { cboDict.Text = anaes.Name; dgvDictionary.AutoGenerateColumns = false; dgvDictionary.Rows.Clear(); int num = 1; anaes.Children = list.Where(a => a.ParentId == anaes.Id).ToList(); foreach (AnaesthesiaMethod sAnaes in anaes.Children) { int index = this.dgvDictionary.Rows.Add(); this.dgvDictionary.Rows[index].Cells["Id"].Value = sAnaes.Id; this.dgvDictionary.Rows[index].Cells["Index"].Value = num; num++; this.dgvDictionary.Rows[index].Cells["aName"].Value = sAnaes.Name; this.dgvDictionary.Rows[index].Cells["HCode"].Value = sAnaes.HelpCode; this.dgvDictionary.Rows[index].Cells["pName"].Value = anaes.Name; this.dgvDictionary.Rows[index].Cells["UseRate"].Value = sAnaes.UseRate; this.dgvDictionary.Rows[index].Cells["IsValid"].Value = sAnaes.IsValid == 1 ? "有效" : "无效"; this.dgvDictionary.Rows[index].Cells["Explain"].Value = sAnaes.Explain; } } private void tsbAdd_Click(object sender, EventArgs e) { if (tvDictionary.SelectedNode == null) { MessageBox.Show("请选择麻醉目录"); return; } state = EditState.ADD; chkIsValid.Checked = true; if (tvDictionary.SelectedNode.Level == 0) { lblts.Text = "当前状态为:添加新麻醉类型"; ControlExtension.EnabledControl(panel1, true); cboDict.Enabled = false; } else { lblts.Text = "当前状态为:为" + tvDictionary.SelectedNode.Text + "添加新麻醉方式"; ControlExtension.EnabledControl(panel1, true); cboDict.Enabled = false; } } private void tsbModify_Click(object sender, EventArgs e) { if (dgvDictionary.SelectedRows.Count < 1) { MessageBox.Show("请从列表中选择要修改的麻醉方式!"); return; } state = EditState.EDIT; pid = Convert.ToInt32(dgvDictionary.SelectedRows[0].Cells["Id"].Value); txtName.Text = dgvDictionary.SelectedRows[0].Cells["aName"].Value.ToString(); txtHCode.Text = dgvDictionary.SelectedRows[0].Cells["HCode"].Value.ToString(); if (dgvDictionary.SelectedRows[0].Cells["Explain"].Value != null) txtHqms.Text = dgvDictionary.SelectedRows[0].Cells["Explain"].Value.ToString(); chkIsValid.Checked = dgvDictionary.SelectedRows[0].Cells["IsValid"].Value.ToString() == "有效" ? true : false; intDepOrder.Text = dgvDictionary.SelectedRows[0].Cells["UseRate"].Value.ToString(); txtName.Enabled = true; txtHCode.Enabled = true; intDepOrder.Enabled = true; chkIsValid.Enabled = true; txtHqms.Enabled = true; } private void tsbCancel_Click(object sender, EventArgs e) { ControlExtension.EnabledControl(panel1, false); ControlExtension.ClearControl(panel1); lblts.Text = ""; state = EditState.BROWSE; } private void tsbSave_Click(object sender, EventArgs e) { foreach (DataGridViewRow row in dgvDictionary.Rows) { if (state != EditState.EDIT && (row.Cells["aName"].Value.ToString() == txtName.Text.Trim())) { MessageBox.Show("麻醉方式已存在,请重新输入"); txtName.Text = ""; txtName.Focus(); return; } } if (ValidInput()) { AnaesthesiaMethod anaes = new AnaesthesiaMethod(); string nodeName = cboDict.Text.Trim(); if (Convert.ToInt32(cboDict.SelectedValue) > 0) { anaes.ParentId = Convert.ToInt32(cboDict.SelectedValue); } else { anaes.ParentId = 0; } anaes.Name = txtName.Text.Trim(); anaes.HelpCode = txtHCode.Text.Trim(); anaes.IsValid = chkIsValid.Checked == true ? 1 : 0; if (intDepOrder.Text.Trim().Length > 0) { anaes.UseRate = int.Parse(intDepOrder.Text.Trim()); } else { anaes.UseRate = 0; } anaes.Explain = txtHqms.Text.Trim(); anaes.OperatorNo = PublicMethod.OperatorNo; anaes.OperatorName = PublicMethod.OperatorName; anaes.OperateDate = DateTime.Now; int n = 0; if (state == EditState.ADD) { n = BAnaesthesiaMethod.Insert(anaes); } else if (state == EditState.EDIT) { anaes.Id = pid; n = BAnaesthesiaMethod.Update(anaes); } if (n > 0) { MessageBox.Show("保存成功!"); ControlExtension.EnabledControl(panel1, false); ControlExtension.ClearControl(panel1); } Initial(); state = EditState.BROWSE; foreach (TreeNode node in tvDictionary.Nodes[0].Nodes) { if (node.Text == nodeName) { AnaesthesiaMethod sbd = node.Tag as AnaesthesiaMethod; FullDgv(sbd); break; } } } } /// /// 输入字典名称时为助记码文本框赋值 /// /// /// private void txtName_TextChanged(object sender, EventArgs e) { txtHCode.Text = PublicMethod.GetFirstLetter(txtName.Text); } /// /// 输入验证 /// /// private bool ValidInput() { bool key = false; if (txtName.Text.Trim().Length < 1) { MessageBox.Show("请输入名称!"); } else if (txtHCode.Text.Trim().Length < 1) { MessageBox.Show("请输入助记码!"); } else if (txtHqms.Text.Trim().Length < 1) { MessageBox.Show("请输HQMS编码!"); } else { key = true; } return key; } private void tvDictionary_AfterSelect(object sender, TreeViewEventArgs e) { if (tvDictionary.SelectedNode.Level <= 0) return; AnaesthesiaMethod bd = tvDictionary.SelectedNode.Tag as AnaesthesiaMethod; FullDgv(bd); } } }