Triangulation_Item.cs 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. using OTSPeriodicTable;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Windows.Forms;
  7. namespace OTSIncAReportApp.OTSMgrInfo
  8. {
  9. public partial class Triangulation_Item : Form
  10. {
  11. #region 变量定义
  12. private DataTable m_dt_moban;
  13. private DataTable m_dt_item_element;
  14. private string m_mobanid = "";
  15. private string m_xiangmuming = "";
  16. #endregion
  17. #region 构造函数及窗体加载
  18. public Triangulation_Item()
  19. {
  20. InitializeComponent();
  21. }
  22. public Triangulation_Item(string in_mobanid, string in_xiangmuming, DataTable in_dt_moban, DataTable in_dt_item_element)
  23. {
  24. m_mobanid = in_mobanid;
  25. m_xiangmuming = in_xiangmuming;
  26. m_dt_moban = in_dt_moban;
  27. m_dt_item_element = in_dt_item_element;
  28. InitializeComponent();
  29. }
  30. private void Triangulation_Item_Load(object sender, EventArgs e)
  31. {
  32. if (m_mobanid == "")
  33. {
  34. //进入该窗体必须是有数据记录的情况 ,如果没有说明出现问题,返回
  35. return;
  36. }
  37. //绑定下拉框
  38. BindComboBox();
  39. //设置数据列
  40. Gview_element.Columns.Add("序号", "序号");
  41. Gview_element.Columns.Add("元素名称", "元素名称");
  42. Gview_element.Columns.Add("元素数量", "元素数量");
  43. //增加linkButton,删除按钮
  44. DataGridViewLinkColumn dlink = new DataGridViewLinkColumn();
  45. dlink.Text = "删除";//添加的这列的显示文字,即每行最后一列显示的文字。
  46. dlink.Name = "delLink";
  47. dlink.HeaderText = "删除";//列的标题
  48. dlink.UseColumnTextForLinkValue = true;//上面设置的dlink.Text文字在列中显示
  49. Gview_element.Columns.Add(dlink);
  50. //加载样式
  51. SetDataGridStyle();
  52. //绑定数据
  53. BindGView();
  54. //显示项目名称
  55. for (int i = 0; i < m_dt_moban.Rows.Count; i++)
  56. {
  57. if (m_dt_moban.Rows[i]["TemplateID"].ToString() == m_mobanid)
  58. {
  59. tb_itemname.Text = m_dt_moban.Rows[i][m_xiangmuming].ToString();
  60. }
  61. }
  62. }
  63. #endregion
  64. #region 自定义函数及方法
  65. /// <summary>
  66. /// 提供编号列名,获取DataTable中,编号列自增长后的ID标识
  67. /// </summary>
  68. /// <param name="dt"></param>
  69. /// <param name="col_name"></param>
  70. /// <returns></returns>
  71. public int Get_MaxBH(DataTable dt, string col_name)
  72. {
  73. int rownumber = 0;
  74. if (dt.Rows.Count == 0)
  75. {
  76. rownumber = 1;
  77. return rownumber;
  78. }
  79. else
  80. {
  81. //取最大的并且小于10000的表自增长id,然后再加1
  82. for (int i = 0; i < dt.Rows.Count; i++)
  83. {
  84. int ls_int = Convert.ToInt32(dt.Rows[i][col_name].ToString());
  85. if (rownumber <= ls_int && 10000 > ls_int)
  86. {
  87. rownumber = ls_int + 1;
  88. }
  89. }
  90. }
  91. return rownumber;
  92. }
  93. /// <summary>
  94. /// 向GridView绑定数据
  95. /// </summary>
  96. private void BindGView()
  97. {
  98. Gview_element.Rows.Clear();
  99. for (int i = 0; i < m_dt_item_element.Rows.Count; i++)
  100. {
  101. if (m_dt_item_element.Rows[i]["TemplateID"].ToString() == m_mobanid
  102. && (m_dt_item_element.Rows[i]["ItemTypeName"].ToString() == m_xiangmuming))
  103. {
  104. int index = Gview_element.Rows.Add();
  105. Gview_element.Rows[index].Cells["序号"].Value = m_dt_item_element.Rows[i]["ElementID"].ToString();
  106. Gview_element.Rows[index].Cells["元素名称"].Value = m_dt_item_element.Rows[i]["ElementName"].ToString();
  107. Gview_element.Rows[index].Cells["元素数量"].Value = m_dt_item_element.Rows[i]["ElementNumber"].ToString();
  108. }
  109. }
  110. }
  111. /// <summary>
  112. /// 绑定元素名称,及元素数量combobox
  113. /// </summary>
  114. private void BindComboBox()
  115. {
  116. cbo_elementname.Items.Clear();
  117. cbo_elementnumber.Items.Clear();
  118. List<Periodic> list_periodic = CListPeriodic.GetListPeriodic();
  119. //排序
  120. List<Periodic> list_sortperiodic = list_periodic.OrderBy(s => s.Symbol).ToList();
  121. foreach (Periodic pc in list_sortperiodic)
  122. {
  123. cbo_elementname.Items.Add(pc.Symbol);
  124. }
  125. for (int i = 1; i < 21; i++)
  126. {
  127. cbo_elementnumber.Items.Add(i.ToString());
  128. }
  129. cbo_elementname.SelectedIndex = 0;
  130. cbo_elementnumber.SelectedIndex = 0;
  131. }
  132. private void SetDataGridStyle()
  133. {
  134. #region //设置规则 DataGridView的样式------------------------------
  135. Gview_element.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
  136. Gview_element.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;
  137. Gview_element.AllowUserToResizeColumns = false;
  138. Gview_element.AllowUserToResizeRows = false;
  139. //改变行的高度;
  140. Gview_element.RowTemplate.Height = 20;
  141. //改变标题的高度;
  142. Gview_element.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
  143. Gview_element.ColumnHeadersHeight = 20;
  144. //禁用排序
  145. for (int i = 0; i < this.Gview_element.Columns.Count; i++)
  146. {
  147. this.Gview_element.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
  148. }
  149. //点击选择整行
  150. Gview_element.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
  151. //设置每列的宽度
  152. Gview_element.Columns[0].Width = 50;
  153. Gview_element.Columns[1].Width = 80;
  154. Gview_element.Columns[2].Width = 80;
  155. Gview_element.Columns[3].Width = 50;
  156. //禁止排序
  157. for (int i = 0; i < Gview_element.Columns.Count; i++)
  158. {
  159. Gview_element.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
  160. }
  161. //居中显示
  162. System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
  163. dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
  164. Gview_element.DefaultCellStyle = dataGridViewCellStyle1;
  165. Gview_element.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
  166. //再次重覆禁用拖动表头高度
  167. Gview_element.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;
  168. #endregion
  169. }
  170. #endregion
  171. #region 控件事件
  172. private void button2_Click(object sender, EventArgs e)
  173. {
  174. //返回
  175. this.Close();
  176. }
  177. private void button1_Click(object sender, EventArgs e)
  178. {
  179. //判断项目名称不能为空
  180. if (tb_itemname.Text.Trim() == "")
  181. {
  182. MessageBox.Show("输入的项目名称不能为空!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information);
  183. tb_itemname.Focus();
  184. tb_itemname.SelectAll();
  185. return;
  186. }
  187. //判断gview不能为空
  188. if (Gview_element.Rows.Count == 0)
  189. {
  190. MessageBox.Show("输入的元素数量不能为空!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information);
  191. cbo_elementname.Focus();
  192. cbo_elementname.SelectAll();
  193. return;
  194. }
  195. //保存
  196. //将顶点名称更新到moban表中
  197. for (int i = 0; i < m_dt_moban.Rows.Count; i++)
  198. {
  199. if (m_dt_moban.Rows[i]["TemplateID"].ToString() == m_mobanid)
  200. {
  201. m_dt_moban.Rows[i][m_xiangmuming] = tb_itemname.Text.Trim();
  202. }
  203. }
  204. this.DialogResult = DialogResult.OK;
  205. this.Close();
  206. }
  207. private void button3_Click(object sender, EventArgs e)
  208. {
  209. //先校验,添加的元素是否是正确的元素周期表中的元素
  210. if (false == CListPeriodic.ExistPeriodicByEleName(cbo_elementname.Text.Trim().ToUpper()))
  211. {
  212. MessageBox.Show("输入的元素信息错误!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information);
  213. cbo_elementname.Focus();
  214. cbo_elementname.SelectAll();
  215. return;
  216. }
  217. //再判断,是否已经在该模板中,该项目中已经添加了该元素
  218. bool yn = false;
  219. for (int i = 0; i < Gview_element.Rows.Count; i++)
  220. {
  221. if (Gview_element.Rows[i].Cells[1].Value.ToString() == cbo_elementname.Text.Trim().ToUpper())
  222. yn = true;
  223. }
  224. if (yn == true)
  225. {
  226. MessageBox.Show("已经在该项中包含了该元素!", "Tip", MessageBoxButtons.OK, MessageBoxIcon.Information);
  227. cbo_elementname.Focus();
  228. cbo_elementname.SelectAll();
  229. return;
  230. }
  231. //同时将大小写转换成大写
  232. cbo_elementname.Text = cbo_elementname.Text.Trim().ToUpper();
  233. //添加
  234. string str_elementid = Get_MaxBH(m_dt_item_element, "ElementID").ToString();
  235. DataRow dr = m_dt_item_element.NewRow();
  236. dr["ElementID"] = str_elementid;
  237. dr["TemplateID"] = m_mobanid;
  238. dr["ItemTypeName"] = m_xiangmuming;
  239. dr["ElementName"] = cbo_elementname.Text;
  240. dr["ElementNumber"] = cbo_elementnumber.Text;
  241. m_dt_item_element.Rows.Add(dr);
  242. //添加后重新绑定
  243. BindGView();
  244. }
  245. private void Gview_element_CellClick(object sender, DataGridViewCellEventArgs e)
  246. {
  247. //删除
  248. if (e.RowIndex < 0)
  249. {
  250. return;
  251. }
  252. //获取模板ID
  253. string str_elementid = Gview_element.Rows[e.RowIndex].Cells[0].Value.ToString();
  254. if (Gview_element.Columns[e.ColumnIndex].Name == "delLink")
  255. {
  256. for (int i = 0; i < m_dt_item_element.Rows.Count; i++)
  257. {
  258. if (m_dt_item_element.Rows[i]["ElementID"].ToString() == str_elementid)
  259. {
  260. //删除
  261. m_dt_item_element.Rows.Remove(m_dt_item_element.Rows[i]);
  262. }
  263. }
  264. }
  265. //删除后,重新绑定
  266. BindGView();
  267. }
  268. #endregion
  269. }
  270. }