Triangulation_Item.cs 11 KB

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