using AIMSBLL; using AIMSExtension; using AIMSModel; using DataDictionary; using System; using System.Collections.Generic; using System.Data; using System.Windows.Forms; namespace AIMS.PublicUI.UI { public partial class frmSelectDisease : Form { private int currentPage = 0; private int total = 0; private int pages = 0; private DataTable SelectLeftdt; public List SelectRightData = new List(); public frmSelectDisease() { InitializeComponent(); } private void frmSelectDisease_Load(object sender, EventArgs e) { if (PublicMethod.RoleName.Contains("增加诊断")) { btnAddDisease.Visible = true; } ControlExtension.SetDgvAttribute(dgvDisease); ControlExtension.SetDgvAttribute(dgvSelectDisease); SelectLeftdt = BDisease.GetDataTable(""); this.currentPage = 0; this.total = SelectLeftdt.Rows.Count; if (this.total % 15 == 0) { this.pages = this.total / 15; } else { this.pages = this.total / 15 + 1; } this.labPage.Text = this.currentPage + 1 + "/" + this.pages; this.dgvDisease.DataSource = this.GetTableByCurrentPage(this.currentPage, SelectLeftdt); if (SelectRightData.Count > 0) { foreach (int RowId in SelectRightData) { Disease DiseaseObj = BDisease.GetModel(RowId); dgvSelectDisease.Rows.Add(DiseaseObj.Id, DiseaseObj.IcdCode, DiseaseObj.Name); } } txtHelpCode.Focus(); } private DataTable GetTableByCurrentPage(int currPage, DataTable dt) { DataTable dataTable = dt.Clone(); int num = currPage * 15; for (int i = num; i < num + 15 && i != this.total; i++) { DataRow dataRow = dataTable.NewRow(); dataRow["Id"] = Convert.ToInt32(dt.Rows[i]["Id"]); dataRow["IcdCode"] = dt.Rows[i]["IcdCode"].ToString(); dataRow["Name"] = dt.Rows[i]["Name"].ToString(); dataTable.Rows.Add(dataRow); } return dataTable; } private void txtHelpCode_TextChanged(object sender, EventArgs e) { this.dgvDisease.AutoGenerateColumns = false; this.SelectLeftdt = BDisease.GetDataTable(txtHelpCode.Text.Trim()); this.dgvDisease.DataSource = this.SelectLeftdt; this.currentPage = 0; this.total = this.SelectLeftdt.Rows.Count; if (this.total % 15 == 0) { this.pages = this.total / 15; } else { this.pages = this.total / 15 + 1; } this.labPage.Text = this.currentPage + 1 + "/" + this.pages; this.dgvDisease.DataSource = this.GetTableByCurrentPage(this.currentPage, this.SelectLeftdt); } private void lkUp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (this.total != 0 && this.currentPage != 0) { this.currentPage--; this.dgvDisease.DataSource = this.GetTableByCurrentPage(this.currentPage, SelectLeftdt); this.labPage.Text = this.currentPage + 1 + "/" + this.pages; } } private void labDown_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (this.total != 0 && this.currentPage + 1 != this.pages) { this.currentPage++; this.dgvDisease.DataSource = this.GetTableByCurrentPage(this.currentPage, this.SelectLeftdt); this.labPage.Text = this.currentPage + 1 + "/" + this.pages; } } private void dgvDisease_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (dgvDisease.Rows.Count > 0) { int num = Convert.ToInt32(this.dgvDisease.CurrentRow.Cells["Id"].Value); DataTable SelectDataTable = GetDgvToTable(dgvSelectDisease); foreach (DataRow row in SelectDataTable.Rows) { if (Convert.ToInt32(row["SelectIdColumn"]) == num) { MessageBox.Show("已选择!"); return; } } dgvSelectDisease.Rows.Add( dgvDisease.CurrentRow.Cells["Id"].Value.ToString(), dgvDisease.CurrentRow.Cells["IcdCodeColumn"].Value.ToString(), dgvDisease.CurrentRow.Cells["NameColumn"].Value.ToString()); } } public static DataTable GetDgvToTable(DataGridView dgv) { DataTable dt = new DataTable(); // 列强制转换 for (int count = 0; count < dgv.Columns.Count; count++) { DataColumn dc = new DataColumn(dgv.Columns[count].Name.ToString()); dt.Columns.Add(dc); } // 循环行 for (int count = 0; count < dgv.Rows.Count; count++) { DataRow dr = dt.NewRow(); for (int countsub = 0; countsub < dgv.Columns.Count; countsub++) { dr[countsub] = Convert.ToString(dgv.Rows[count].Cells[countsub].Value); } dt.Rows.Add(dr); } return dt; } private void btnToRight_Click(object sender, EventArgs e) { dgvDisease_CellDoubleClick(null, null); } private void btnToLeft_Click(object sender, EventArgs e) { if (dgvSelectDisease.Rows.Count > 0) { dgvSelectDisease.Rows.RemoveAt(dgvSelectDisease.CurrentRow.Index); } } private void btnOk_Click(object sender, EventArgs e) { SelectRightData.Clear(); if (dgvSelectDisease.Rows.Count > 0) { for (int i = 0; i < dgvSelectDisease.Rows.Count; i++) { SelectRightData.Add(int.Parse(dgvSelectDisease.Rows[i].Cells["SelectIdColumn"].Value.ToString())); } } Close(); } private void btnAddDisease_Click(object sender, EventArgs e) { Disease DiseaseObj = new Disease(); DiseaseObj.Name = txtHelpCode.Text.Trim(); DiseaseObj.IcdCode = ""; DiseaseObj.HelpCode = AIMSExtension.PublicMethod.GetFirstLetter(DiseaseObj.Name); DiseaseObj.IsValid = 1; DiseaseObj.UseRate = 1; DiseaseObj.OperatorNo = AIMSExtension.PublicMethod.OperatorNo; DiseaseObj.OperatorName = AIMSExtension.PublicMethod.OperatorName; DiseaseObj.OperateDate = AIMSExtension.PublicMethod.SystemDate(); if (DiseaseObj.Name == "") { MessageBox.Show("名称不能为空!"); return; } if (BDisease.IsExit(DiseaseObj.Name)) { MessageBox.Show("该事件已存在"); return; } BDisease.Add(DiseaseObj); txtHelpCode_TextChanged(null, null); dgvDisease_CellDoubleClick(null, null); } private void dgvSelectDisease_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { if (dgvSelectDisease.Rows.Count > 0) { dgvSelectDisease.Rows.RemoveAt(dgvSelectDisease.CurrentRow.Index); } } private void btnUp_Click(object sender, EventArgs e) { try { DataGridViewSelectedRowCollection dgvsrc = dgvSelectDisease.SelectedRows;//获取选中行的集合 if (dgvsrc.Count > 0) { int index = dgvSelectDisease.SelectedRows[0].Index;//获取当前选中行的索引 if (index > 0)//如果该行不是第一行 { DataGridViewRow dgvr = dgvSelectDisease.Rows[index - dgvsrc.Count];//获取选中行的上一行 dgvSelectDisease.Rows.RemoveAt(index - dgvsrc.Count);//删除原选中行的上一行 dgvSelectDisease.Rows.Insert((index), dgvr);//将选中行的上一行插入到选中行的后面 for (int i = 0; i < dgvsrc.Count; i++)//选中移动后的行 { dgvSelectDisease.Rows[index - i - 1].Selected = true; } } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } private void btnDown_Click(object sender, EventArgs e) { try { DataGridViewSelectedRowCollection dgvsrc = dgvSelectDisease.SelectedRows;//获取选中行的集合 if (dgvsrc.Count > 0) { int index = dgvSelectDisease.SelectedRows[0].Index;//获取当前选中行的索引 if (index >= 0 & (dgvSelectDisease.RowCount - 1) != index)//如果该行不是最后一行 { DataGridViewRow dgvr = dgvSelectDisease.Rows[index + 1];//获取选中行的下一行 dgvSelectDisease.Rows.RemoveAt(index + 1);//删除原选中行的上一行 dgvSelectDisease.Rows.Insert((index + 1 - dgvsrc.Count), dgvr);//将选中行的上一行插入到选中行的后面 for (int i = 0; i < dgvsrc.Count; i++)//选中移动后的行 { dgvSelectDisease.Rows[index + 1 - i].Selected = true; } } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } } }