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
}
}