using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; namespace OTSIncAReportApp.OTSMgrInfo { public partial class Triangulation_Item : Form { #region 变量定义 private DataTable m_dt_moban; private DataTable m_dt_item_element; private string m_mobanid = ""; private string m_xiangmuming = ""; #endregion #region 构造函数及窗体加载 public Triangulation_Item() { InitializeComponent(); } public Triangulation_Item(string in_mobanid, string in_xiangmuming, DataTable in_dt_moban, DataTable in_dt_item_element) { m_mobanid = in_mobanid; m_xiangmuming = in_xiangmuming; m_dt_moban = in_dt_moban; m_dt_item_element = in_dt_item_element; InitializeComponent(); } private void Triangulation_Item_Load(object sender, EventArgs e) { if (m_mobanid == "") { //进入该窗体必须是有数据记录的情况 ,如果没有说明出现问题,返回 return; } //绑定下拉框 BindComboBox(); //设置数据列 Gview_element.Columns.Add("序号", "序号"); Gview_element.Columns.Add("元素名称", "元素名称"); Gview_element.Columns.Add("元素数量", "元素数量"); //增加linkButton,删除按钮 DataGridViewLinkColumn dlink = new DataGridViewLinkColumn(); dlink.Text = "删除";//添加的这列的显示文字,即每行最后一列显示的文字。 dlink.Name = "delLink"; dlink.HeaderText = "删除";//列的标题 dlink.UseColumnTextForLinkValue = true;//上面设置的dlink.Text文字在列中显示 Gview_element.Columns.Add(dlink); //加载样式 SetDataGridStyle(); //绑定数据 BindGView(); //显示项目名称 for (int i = 0; i < m_dt_moban.Rows.Count; i++) { if (m_dt_moban.Rows[i]["TemplateID"].ToString() == m_mobanid) { tb_itemname.Text = m_dt_moban.Rows[i][m_xiangmuming].ToString(); } } } #endregion #region 自定义函数及方法 /// /// 提供编号列名,获取DataTable中,编号列自增长后的ID标识 /// /// /// /// public int Get_MaxBH(DataTable dt, string col_name) { int rownumber = 0; if (dt.Rows.Count == 0) { rownumber = 1; return rownumber; } else { //取最大的并且小于10000的表自增长id,然后再加1 for (int i = 0; i < dt.Rows.Count; i++) { int ls_int = Convert.ToInt32(dt.Rows[i][col_name].ToString()); if (rownumber <= ls_int && 10000 > ls_int) { rownumber = ls_int + 1; } } } return rownumber; } /// /// 向GridView绑定数据 /// private void BindGView() { Gview_element.Rows.Clear(); for (int i = 0; i < m_dt_item_element.Rows.Count; i++) { if (m_dt_item_element.Rows[i]["TemplateID"].ToString() == m_mobanid && (m_dt_item_element.Rows[i]["ItemTypeName"].ToString() == m_xiangmuming)) { int index = Gview_element.Rows.Add(); Gview_element.Rows[index].Cells["序号"].Value = m_dt_item_element.Rows[i]["ElementID"].ToString(); Gview_element.Rows[index].Cells["元素名称"].Value = m_dt_item_element.Rows[i]["ElementName"].ToString(); Gview_element.Rows[index].Cells["元素数量"].Value = m_dt_item_element.Rows[i]["ElementNumber"].ToString(); } } } /// /// 绑定元素名称,及元素数量combobox /// private void BindComboBox() { cbo_elementname.Items.Clear(); cbo_elementnumber.Items.Clear(); List list_periodic = OTSRptPeriodicTable.CListPeriodic.GetListPeriodic(); //排序 List list_sortperiodic = list_periodic.OrderBy(s => s.FH).ToList(); foreach (OTSRptPeriodicTable.Periodic pc in list_sortperiodic) { cbo_elementname.Items.Add(pc.FH); } for (int i = 1; i < 21; i++) { cbo_elementnumber.Items.Add(i.ToString()); } cbo_elementname.SelectedIndex = 0; cbo_elementnumber.SelectedIndex = 0; } private void SetDataGridStyle() { #region //设置规则 DataGridView的样式------------------------------ Gview_element.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; Gview_element.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing; Gview_element.AllowUserToResizeColumns = false; Gview_element.AllowUserToResizeRows = false; //改变行的高度; Gview_element.RowTemplate.Height = 20; //改变标题的高度; Gview_element.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing; Gview_element.ColumnHeadersHeight = 20; //禁用排序 for (int i = 0; i < this.Gview_element.Columns.Count; i++) { this.Gview_element.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; } //点击选择整行 Gview_element.SelectionMode = DataGridViewSelectionMode.FullRowSelect; //设置每列的宽度 Gview_element.Columns[0].Width = 50; Gview_element.Columns[1].Width = 80; Gview_element.Columns[2].Width = 80; Gview_element.Columns[3].Width = 50; //禁止排序 for (int i = 0; i < Gview_element.Columns.Count; i++) { Gview_element.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; } //居中显示 System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter; Gview_element.DefaultCellStyle = dataGridViewCellStyle1; Gview_element.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; //再次重覆禁用拖动表头高度 Gview_element.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; #endregion } #endregion #region 控件事件 private void button2_Click(object sender, EventArgs e) { //返回 this.Close(); } private void button1_Click(object sender, EventArgs e) { //判断项目名称不能为空 if (tb_itemname.Text.Trim() == "") { MessageBox.Show("输入的项目名称不能为空!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information); tb_itemname.Focus(); tb_itemname.SelectAll(); return; } //判断gview不能为空 if (Gview_element.Rows.Count == 0) { MessageBox.Show("输入的元素数量不能为空!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information); cbo_elementname.Focus(); cbo_elementname.SelectAll(); return; } //保存 //将顶点名称更新到moban表中 for (int i = 0; i < m_dt_moban.Rows.Count; i++) { if (m_dt_moban.Rows[i]["TemplateID"].ToString() == m_mobanid) { m_dt_moban.Rows[i][m_xiangmuming] = tb_itemname.Text.Trim(); } } this.DialogResult = DialogResult.OK; this.Close(); } private void button3_Click(object sender, EventArgs e) { //先校验,添加的元素是否是正确的元素周期表中的元素 if (false == OTSRptPeriodicTable.CListPeriodic.ExistPeriodicByYsm(OTSRptPeriodicTable.CListPeriodic.GetListPeriodic(), cbo_elementname.Text.Trim().ToUpper())) { MessageBox.Show("输入的元素信息错误!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information); cbo_elementname.Focus(); cbo_elementname.SelectAll(); return; } //再判断,是否已经在该模板中,该项目中已经添加了该元素 bool yn = false; for (int i = 0; i < Gview_element.Rows.Count; i++) { if (Gview_element.Rows[i].Cells[1].Value.ToString() == cbo_elementname.Text.Trim().ToUpper()) yn = true; } if (yn == true) { MessageBox.Show("已经在该项中包含了该元素!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information); cbo_elementname.Focus(); cbo_elementname.SelectAll(); return; } //同时将大小写转换成大写 cbo_elementname.Text = cbo_elementname.Text.Trim().ToUpper(); //添加 string str_elementid = Get_MaxBH(m_dt_item_element, "ElementID").ToString(); DataRow dr = m_dt_item_element.NewRow(); dr["ElementID"] = str_elementid; dr["TemplateID"] = m_mobanid; dr["ItemTypeName"] = m_xiangmuming; dr["ElementName"] = cbo_elementname.Text; dr["ElementNumber"] = cbo_elementnumber.Text; m_dt_item_element.Rows.Add(dr); //添加后重新绑定 BindGView(); } private void Gview_element_CellClick(object sender, DataGridViewCellEventArgs e) { //删除 if (e.RowIndex < 0) { return; } //获取模板ID string str_elementid = Gview_element.Rows[e.RowIndex].Cells[0].Value.ToString(); if (Gview_element.Columns[e.ColumnIndex].Name == "delLink") { for (int i = 0; i < m_dt_item_element.Rows.Count; i++) { if (m_dt_item_element.Rows[i]["ElementID"].ToString() == str_elementid) { //删除 m_dt_item_element.Rows.Remove(m_dt_item_element.Rows[i]); } } } //删除后,重新绑定 BindGView(); } #endregion } }