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; using AIMSBLL; using AIMSModel; using DrawGraph; using AIMSExtension; using DevComponents.DotNetBar.Controls; namespace AIMS.PublicUI.UI { public partial class frmFactOutputLiquidsNew : Form { public frmFactOutputLiquidsNew() { InitializeComponent(); } /// /// 手术记录 /// public DrawGraph.OperationRecord _record; /// /// 图表控件 /// public DrawGraph.ZedGraphControl zgcAnaesRecord; /// /// 出量集合 /// public List _outputList; /// /// 计量单位集合 /// public List _unitList; public delegate void OutsParamHandler(); public event OutsParamHandler OutParam; int LastColumnIndex = 0;// e.ColumnIndex public int OutputLiquidTypeId; private void frmFactOutputLiquidsNew_Load(object sender, EventArgs e) { for (int i = 0; i < dgvOutput.Columns.Count; i++) { dgvOutput.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; } Initial(); dgvEvents_RowsAdded(null, null); } /// /// 初始化公共成员 /// private void Initial() { _unitList = BBasicDictionary.GetBasicDictionaryByName("给药单位").SubItem; _outputList = BOutputLiquids.Select(" IsValid=1", null); _unitList.Insert(0, new BasicDictionary() { Id = -1, Name = "" }); #region 增加常用出量显示 foreach (OutputLiquids type in _outputList) { int index = this.dgvOutput.Rows.Add(); this.dgvOutput.Rows[index].Cells["OutputName"].Value = type.Name; this.dgvOutput.Rows[index].Cells["OutputName"].Tag = type.Id; this.dgvOutput.Rows[index].Cells["DoseUnit"].Value = "ml"; dgvOutput.CurrentCell = this.dgvOutput.Rows[index].Cells[2]; dgvOutput.BeginEdit(true); if (index == 3) break; } #endregion _outputList.Insert(0, new OutputLiquids() { Id = -1, Name = "" }); if (_record.FactOutputLiquidsList.Count > 0) { FullDGV(_record.FactOutputLiquidsList); } } private void FullDGV(List list) { //添加出量 if (list.Count > 0) { foreach (FactOutputLiquids item in list) { bool k = false; foreach (DataGridViewRow row in dgvOutput.Rows) { OutputLiquids type = null; if (row.Cells["OutputName"].Tag != null) { type = BOutputLiquids.SelectSingle(Convert.ToInt32(row.Cells["OutputName"].Tag)); } if (type != null) { if (type.Id == item.OutputLiquidsId && row.Cells["Dose"].EditedFormattedValue.ToString() == "") { row.Tag = item.Id; row.Cells["Dose"].Value = ((double)item.Dosage).ToString(); row.Cells["DoseUnit"].Value = item.DosageUnit; if (Convert.ToDateTime(item.BeginTime).ToString().Length > 0) { row.Cells["BeginTime"].Value = item.BeginTime; } if (item.IsContinue > 0) { row.Cells["Continue"].Value = "-->"; } if (Convert.ToDateTime(item.EndTime).ToString().Length > 0) { if (item.EndTime != item.BeginTime) { row.Cells["EndTime"].Value = item.EndTime;// Convert.ToDateTime(item.EndTime); } } if (Convert.ToDateTime(item.EndTime).ToString().Length > 0 && item.EndTime > item.BeginTime) { row.Cells["Continue"].Value = "-->"; row.Cells["EndTime"].Value = item.EndTime; } row.Cells["Remark"].Value = item.Remark; k = true; break; } } } if (k) continue; int index = this.dgvOutput.Rows.Add(); this.dgvOutput.Rows[index].Tag = item.Id; this.dgvOutput.Rows[index].Cells["Remark"].Value = item.Remark; this.dgvOutput.Rows[index].Cells["OutputName"].Value = item.OutputLiquidsName; this.dgvOutput.Rows[index].Cells["OutputName"].Tag = item.OutputLiquidsId; this.dgvOutput.Rows[index].Cells["Dose"].Value = (double)item.Dosage; this.dgvOutput.Rows[index].Cells["DoseUnit"].Value = item.DosageUnit; if (Convert.ToDateTime(item.BeginTime).ToString().Length > 0) { this.dgvOutput.Rows[index].Cells["BeginTime"].Value = item.BeginTime; } if (item.IsContinue > 0) { this.dgvOutput.Rows[index].Cells["Continue"].Value = "-->"; } if (Convert.ToDateTime(item.EndTime).ToString().Length > 0) { if (item.EndTime != item.BeginTime) { this.dgvOutput.Rows[index].Cells["EndTime"].Value = item.EndTime; } } } } } private void dgvEvents_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e) { DataGridViewComboEditTipBoxCell nameCell; DataGridViewComboBoxCell unitCell; if (e == null) { nameCell = dgvOutput.Rows[dgvOutput.Rows.Count - 1].Cells["OutputName"] as DataGridViewComboEditTipBoxCell; unitCell = dgvOutput.Rows[dgvOutput.Rows.Count - 1].Cells["DoseUnit"] as DataGridViewComboBoxCell; } else { nameCell = dgvOutput.Rows[e.RowIndex].Cells["OutputName"] as DataGridViewComboEditTipBoxCell; unitCell = dgvOutput.Rows[e.RowIndex].Cells["DoseUnit"] as DataGridViewComboBoxCell; } foreach (var item in _outputList) { nameCell.Items.Add(item.Name); } unitCell.DataSource = _unitList; unitCell.DisplayMember = "Name"; unitCell.ValueMember = "Name"; } private void dgvOutput_CellClick(object sender, DataGridViewCellEventArgs e) { if (dgvOutput.CurrentCell != null) { if (LastColumnIndex == 1 && dgvOutput.CurrentCell.ColumnIndex != 1) { if (dgvOutput.CurrentCell.ColumnIndex == 3) { dgvOutput.CurrentCell = dgvOutput.CurrentRow.Cells[2]; dgvOutput.BeginEdit(true); } } LastColumnIndex = dgvOutput.CurrentCell.ColumnIndex; //点击开始时间时显示时间 if (dgvOutput.CurrentCell.ColumnIndex == 4 && dgvOutput.CurrentCell.EditedFormattedValue.ToString() == "") { dgvOutput.CurrentCell.Value = DateTime.Now; SendKeys.Send("{Tab}"); } //点击Sign列时显示持续事件标记 if (dgvOutput.CurrentCell.ColumnIndex == 5) { if (dgvOutput.CurrentCell.EditedFormattedValue.ToString() == "" && dgvOutput.CurrentRow.Cells["BeginTime"].EditedFormattedValue.ToString() != "") { dgvOutput.CurrentCell.Value = "-->"; btnSave.Focus(); SendKeys.Send("{Tab}"); } else { dgvOutput.CurrentCell.Value = ""; dgvOutput.CurrentRow.Cells["EndTime"].Value = ""; btnSave.Focus(); } } //点击结束时间时判断是否持续事件,并显示时间 if (dgvOutput.CurrentCell.ColumnIndex == 6) { if (dgvOutput.CurrentRow.Cells[5].EditedFormattedValue.ToString() != "" && dgvOutput.CurrentCell.EditedFormattedValue.ToString() == "") { dgvOutput.CurrentCell.Value = DateTime.Now; btnSave.Focus(); //SendKeys.Send("{Tab}"); } } } } private bool ValidTimeTxt(string dgvTimeTxt, ref string message) { bool k = true; if (dgvTimeTxt == "") { return k; } if (!dgvTimeTxt.Contains("-") || !dgvTimeTxt.Contains(":") || !dgvTimeTxt.Contains(" ")) { return false; } if (dgvTimeTxt.IndexOf("-") < 1 || dgvTimeTxt.IndexOf(":") < 1 || dgvTimeTxt.IndexOf(" ") < 1) { return false; } try { string[] ym = dgvTimeTxt.Split(' '); string[] sym = ym[0].Split('-'); string[] hm = ym[1].Split(':'); int month = Convert.ToInt16(sym[0]); int day = Convert.ToInt16(sym[1]); int hh = Convert.ToInt16(hm[0]); int mm = Convert.ToInt16(hm[1]); if (month > 12 || month < 0) { k = false; message = "请填写正确的月份(1-12)"; } if (day > 31 || day < 0) { k = false; message = "请填写正确的日期(1-31)"; } if (hh > 23 || hh < 0) { k = false; message = "请填写正确的小时(0-23)"; } if (mm > 59 || hh < 0) { k = false; message = "请填写正确的小时(0-59)"; } } catch { k = false; } return k; } private void btnDelete_Click(object sender, EventArgs e) { if (dgvOutput.CurrentRow != null) { if (dgvOutput.CurrentRow.Tag != null) { int id = Convert.ToInt32(dgvOutput.CurrentRow.Tag); FactOutputLiquids er = _record.FactOutputLiquidsList.Where(b => b.Id == id).ToList()[0]; //er.IsValid = 0; BFactOutputLiquids.Delete(er); er.clearAddObj(zgcAnaesRecord); _record.FactOutputLiquidsList.Remove(er); OutParam(); dgvOutput.Rows.Remove(dgvOutput.CurrentRow); } else { if (dgvOutput.CurrentRow.Cells["OutputName"].Value != null) { dgvOutput.Rows.Remove(dgvOutput.CurrentRow); } } } } private void btnSave_Click(object sender, EventArgs e) { #region 保存时验证 foreach (DataGridViewRow dr in dgvOutput.Rows) { if (dr.Cells[1].EditedFormattedValue.ToString() != "" && dr.Cells[2].EditedFormattedValue.ToString() != "") { if (dr.Cells["DoseUnit"].EditedFormattedValue.ToString() == "") { MessageBox.Show("保存失败!\n\r" + "请输入:" + dr.Cells[0].EditedFormattedValue.ToString() + ":" + dr.Cells["OutputName"].EditedFormattedValue.ToString() + "的计量单位!"); dgvOutput.CurrentCell = dr.Cells["DoseUnit"]; dgvOutput.BeginEdit(true); return; } } } #endregion foreach (DataGridViewRow dr in dgvOutput.Rows) { if (dr.Cells["OutputName"].EditedFormattedValue.ToString() == "" || dr.Cells["Dose"].EditedFormattedValue.ToString() == "") { continue; } string OutputName = dr.Cells["OutputName"].EditedFormattedValue.ToString().Trim(); int outId = 0; OutputLiquids OutputLiquidsRef = null; OutputLiquidsRef = BOutputLiquids.SelectSingle(" Name='" + OutputName + "'", null, RecursiveType.None, 0); if (OutputLiquidsRef == null) { OutputLiquidsRef = new OutputLiquids(); OutputLiquidsRef.Name = OutputName; OutputLiquidsRef.HelpCode = PublicMethod.GetFirstLetter(OutputName); OutputLiquidsRef.IsValid = 1; OutputLiquidsRef.OperatorNo = PublicMethod.OperatorNo; OutputLiquidsRef.OperateDate = DateTime.Now; OutputLiquidsRef.Id = BOutputLiquids.Insert(OutputLiquidsRef); } outId = OutputLiquidsRef.Id.Value; //实例化OutputLiquids对象 FactOutputLiquids liquids = new FactOutputLiquids(); liquids.OutputLiquidsName = OutputName; liquids.PatientId = _record.PatientId.Value; liquids.OutputLiquidsId = outId; liquids.OutputLiquidsTypeId = OutputLiquidTypeId; liquids.Dosage = Convert.ToDecimal(dr.Cells["Dose"].Value); liquids.DosageUnit = dr.Cells["DoseUnit"].EditedFormattedValue.ToString(); if (dr.Cells["BeginTime"].EditedFormattedValue.ToString() != "") { liquids.BeginTime = Convert.ToDateTime(dr.Cells["BeginTime"].Value.ToString()); } liquids.EndTime = dr.Cells["EndTime"].EditedFormattedValue.ToString() != "" ? Convert.ToDateTime(dr.Cells["EndTime"].Value.ToString()) : liquids.BeginTime; liquids.IsContinue = dr.Cells["Continue"].EditedFormattedValue.ToString() != "" ? 1 : 0; liquids.Remark = dr.Cells["Remark"].EditedFormattedValue.ToString(); liquids.OperatorNo = PublicMethod.OperatorNo; liquids.OperatorName = PublicMethod.OperatorName; liquids.OperateDate = DateTime.Now; if (dr.Tag == null) { ////将事件对象保存到集合 int id = BFactOutputLiquids.Insert(liquids); liquids.Id = id; _record.FactOutputLiquidsList.Add(liquids); //将新增的事件Id保存到Row dr.Tag = id; } else { liquids.Id = Convert.ToInt32(dr.Tag); //将修改的事件保存到集合 foreach (FactOutputLiquids eventRecord in _record.FactOutputLiquidsList) { if (eventRecord.Id == liquids.Id) { //eventRecord.clearAddObj(zgcAnaesRecord); _record.FactOutputLiquidsList.Remove(eventRecord); _record.FactOutputLiquidsList.Add(liquids); break; } } //修改时间对象 BFactOutputLiquids.Update(liquids); } } OutParam(); new frmMessageBox().Show(); //this.Close(); } #region DataGridView数字单元格验证 GZ public DataGridViewTextBoxEditingControl dgvTxt = null; // 声明 一个文本 CellEdit private void dgvOutput_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { //判断类型 if (dgvOutput.CurrentRow.Index != -1 && dgvOutput.CurrentCell.ColumnIndex == 1) { ComboBox comboBox = (ComboBox)e.Control; comboBox.SelectedIndexChanged -= new EventHandler(dgvComboBox_SelectedIndexChanged); comboBox.SelectedIndexChanged += new EventHandler(dgvComboBox_SelectedIndexChanged); } if (dgvTxt != null && (dgvOutput.CurrentCell.ColumnIndex == 4)) { dgvTxt.KeyPress -= new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件 } if (dgvTxt != null && (dgvOutput.CurrentCell.ColumnIndex == 7)) { dgvTxt = (DataGridViewTextBoxEditingControl)e.Control; // 得到单元格 dgvTxt.KeyPress -= new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件 } if (dgvOutput.CurrentCell.ColumnIndex == 2) { dgvTxt = (DataGridViewTextBoxEditingControl)e.Control; // 得到单元格 dgvTxt.KeyPress -= new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件 dgvTxt.KeyPress += new KeyPressEventHandler(dgvTxt_KeyPress); // 绑定事件 if (dgvOutput.CurrentRow.Cells[4].Value == null || dgvOutput.CurrentRow.Cells[4].Value.ToString() == "") { dgvOutput.CurrentRow.Cells[4].Value = DateTime.Now; } } if (e.Control.GetType().Equals(typeof(DevComponents.DotNetBar.Controls.DataGridViewDateTimeInputEditingControl))) ((DevComponents.DotNetBar.Controls.DataGridViewDateTimeInputEditingControl)e.Control).DateTimeSelectorVisibility = DevComponents.Editors.DateTimeAdv.eDateTimeSelectorVisibility.DateSelector; } /// /// DataGridViewComboBoxCell单元格改变选择的事件 /// /// /// void dgvComboBox_SelectedIndexChanged(object sender, EventArgs e) { //ComboBox cbo = (ComboBox)sender; //if (cbo.SelectedIndex > 0) //{ // if (cbo.SelectedValue is OutputLiquids) // { // dgvOutput.CurrentCell.Tag = ((OutputLiquids)cbo.SelectedValue).Id; // } // else // { // dgvOutput.CurrentCell.Tag = cbo.SelectedValue; // } // //dgvOutput.CurrentCell.Tag = cbo.SelectedValue; // OutputLiquids ot = BOutputLiquids.SelectSingle(Convert.ToInt32(dgvOutput.CurrentCell.Tag)); // #region 增加常用出量后取消此功能 20160816 GZ // //dgvOutput.CurrentRow.Cells["DoseUnit"].Value = BBasicDictionary.SelectSingle(" Id=(select Id from BasicDictionary where Explain='剂量' and IsValid=1 and Name = '" + ot.Unit + "')", null).Id; // //dgvOutput.CurrentRow.Cells["BeginTime"].Value = PublicMethod.ServerTime().ToString("MM-dd HH:mm"); // #endregion //} } void dgvTxt_KeyPress(object sender, KeyPressEventArgs e) { if (dgvOutput.CurrentRow.Cells[1].EditedFormattedValue.ToString() == "") { e.Handled = true; return; } if (e.KeyChar < 48 || e.KeyChar > 57) { if (e.KeyChar != 46 && e.KeyChar != 8 && e.KeyChar != 13) { e.Handled = true; } } else { try { dgvOutput.CurrentRow.Cells["DoseUnit"].Value = "ml"; if (dgvOutput.CurrentRow.Cells["BeginTime"].EditedFormattedValue.ToString() == "") { dgvOutput.CurrentRow.Cells["BeginTime"].Value = DateTime.Now; } } catch (Exception) { } } if (e.KeyChar == 8 || e.KeyChar == 46) { return; } TextBox tb = sender as TextBox; int n = tb.Text.IndexOf("."); if (n < 0) { if (tb.Text.Length > 5) { e.Handled = true; } } else { if (tb.Text.Substring(n).Length > 2) { e.Handled = true; } if (n > 6) { e.Handled = true; } } } #endregion private void frmFactOutputLiquidsNew_FormClosing(object sender, FormClosingEventArgs e) { //List UpdateRecordList = GetEventsList(); //if (UpdateRecordList.Count > 0) //{ // DialogResult dialogResult = MessageBox.Show("记录尚未保存,是否保存当前记录?", "系统提示", MessageBoxButtons.YesNo); // if (dialogResult == DialogResult.Yes) // { // btnSave_Click(null, null); // } //} ////this.Hide(); ////e.Cancel = true; } public bool equelEvents(FactOutputLiquids oldDrug, FactOutputLiquids newDrug) { bool b = true; if (oldDrug.Remark != newDrug.Remark) b = false; if (oldDrug.Dosage != newDrug.Dosage) b = false; if (oldDrug.BeginTime != null && newDrug.BeginTime != null && oldDrug.BeginTime.ToString("yyyy-MM-dd HH:mm") != newDrug.BeginTime.ToString("yyyy-MM-dd HH:mm")) b = false; if (oldDrug.EndTime != newDrug.EndTime && oldDrug.EndTime.ToString("HH:mm") != newDrug.EndTime.ToString("HH:mm")) b = false; return b; } /// /// 当前单元格内容发生改变时,将改变提交 /// /// /// private void dgvDrugs_CurrentCellDirtyStateChanged(object sender, EventArgs e) { if (dgvOutput.IsCurrentCellDirty) { dgvOutput.CommitEdit(DataGridViewDataErrorContexts.Commit); } } private void dgvOutput_DataError(object sender, DataGridViewDataErrorEventArgs e) { if (e.Exception.Message == "DataGridViewComboBoxCell 值无效。") { //try //{ // object value = _dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; // if (!((DataGridViewComboBoxCell)_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]).Items.Contains(value)) // { // ((DataGridViewComboBoxCell)_dataGridView.Rows[e.RowIndex].Cells[e.ColumnIndex]).Items.Add(value); // e.ThrowException = false; // } //} //catch (Exception) //{ // e.ThrowException = false; //} } } private void panel2_Paint(object sender, PaintEventArgs e) { } } }