using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace BaseSet { public partial class Gy_ClassTimePrj : Form { private int HItemIDCol = 0; private int HNumberCol = 0; public DBUtility.frm_B_BillQueryCondition_New frmCondition; const string ViewName = "h_v_Gy_ClassTimePrjList"; const string ModName = "核算方式"; public DBUtility.ClsPub.Enum_InputMode InputMode; //录入状态标志(0-非录入状态 1-增加 2-修改) public long HItemID;//项目ID public string sCondition; //过滤条件 public long HItemGroupID; SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); DAL.ClsGy_ClassTimePrj_Ctl oUnit = new DAL.ClsGy_ClassTimePrj_Ctl(); DAL.ClsGy_ClassTimePrj_View oUnitHlp = new DAL.ClsGy_ClassTimePrj_View(); TreeNode CurNode = new TreeNode(); Gy_ClassTimePrjGroup oUnitGroup; public Gy_ClassTimePrj() { InitializeComponent(); } //以下代码基本不需要修改 #region 固定代码 //保存GRID列宽 private void Gy_ClassTimePrj_FormClosing(object sender, FormClosingEventArgs e) { DBUtility.ClsPub.SaveGridView(grdMain, this.Name, DBUtility.ClsPub.AppPath); } //窗体加载 private void Gy_ClassTimePrj_Load(object sender, EventArgs e) { this.Text = ModName; this.lblCaption.Text = ModName; frmCondition = new DBUtility.frm_B_BillQueryCondition_New(); LoadTree(); initGrid(); InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_View; RefreshTool(); } //加载子结点 private void LoadAllNodes(TreeNode sNode) { if (sNode != null) { try { sNode.Nodes.Clear(); DataSet Ds = oCn.RunProcReturn("select hitemid,hname,HNumber from Gy_ClassTimePrjGroup order by HName ", "Gy_ClassTimePrjGroup"); for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { TreeNode oNode = sNode.Nodes.Add("T" + Ds.Tables[0].Rows[i]["HItemID"].ToString(), Ds.Tables[0].Rows[i]["HNumber"].ToString()+"-"+ Ds.Tables[0].Rows[i]["HName"].ToString(), 0,1); } sNode.Expand(); } catch (Exception e) { MessageBox.Show("加载子项目失败!" + e.Message, "提示"); } } } //加载树形 private void LoadTree() { try { tv.Nodes.Clear(); tv.ImageList = imageList1; TreeNode sNode = tv.Nodes.Add("T0", this.Text, 0, 1); LoadAllNodes(sNode); } catch (Exception e ) { MessageBox.Show("加载树型失败!" + e.Message, "提示"); } } private bool AllowSave() { if (txtHNumber.Text.Trim() == "") { MessageBox.Show("代码不能为空!", "提示"); return false; } if (txtHName.Text.Trim() == "") { MessageBox.Show("名称不能为空!", "提示"); return false; } DAL.ClsGy_ClassTimePrjGroup_View oUnGpHlp = new DAL.ClsGy_ClassTimePrjGroup_View(); if (!oUnGpHlp.GetInfoByID(DBUtility.ClsPub.isLong(txtHParentID.Tag))) { MessageBox.Show("所属组不能为空!", "提示"); return false; } //是否重复代码 if (oUnit.HavSameNumber(HItemID, txtHNumber.Text.Trim())) { MessageBox.Show("代码重复!", "提示"); return false; } // return true; } //新增 private void AddNew() { InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_AddNew; Init(); } //退出模块 private void tc_Click(object sender, EventArgs e) { this.Close(); } //刷新 private void xs_Click(object sender, EventArgs e) { Display(); } //查询 private void cx_Click(object sender, EventArgs e) { frmCondition = new DBUtility.frm_B_BillQueryCondition_New(); DBUtility.Gy_BaseFun.SetCondition(frmCondition, ViewName, this.Name); frmCondition.ShowDialog(); if (frmCondition.Tag.ToString() == "OK") { Display(); } } //得到对应列 private Int32 Fun_GetCol(string sCol) { return DBUtility.Gy_BaseFun.Fun_GetCol(sCol, grdMain); } //刷新TOOLBAR private void RefreshTool() { if (InputMode == DBUtility.ClsPub.Enum_InputMode.InputMode_View) { stTab.SelectedIndex = 0; stTab.TabPages.Remove(this.tabPage2); stTab.TabPages.Remove(this.tabPage1); stTab.TabPages.Add(this.tabPage1); grdMain.Enabled = true; tc.Enabled = true; yl.Enabled = true; xz.Enabled = true; xg.Enabled = true; sc.Enabled = true; xs.Enabled = true; cx.Enabled = true; sz.Enabled = true; jz.Enabled = true; gz.Enabled = true; } else { stTab.SelectedIndex = 1; stTab.TabPages.Remove(this.tabPage1); stTab.TabPages.Remove(this.tabPage2); stTab.TabPages.Add(this.tabPage2); stTab.TabPages[0].Hide(); grdMain.Enabled = false; tc.Enabled = true; yl.Enabled = false; xz.Enabled = false; xg.Enabled = false; sc.Enabled = false; xs.Enabled = false; cx.Enabled = false; sz.Enabled = false; jz.Enabled = false; gz.Enabled = false; } } //删除项目 public void Delete() { if (DBUtility.Gy_BaseFun.AllowRow(grdMain)) { if (MessageBox.Show("确定要删除当前项目?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { //得到HITEMID long sItemID; sItemID = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HItemIDCol].Value); //判断存在性 if (oUnitHlp.GetInfoByID(sItemID)) { if (oUnit.HavChildCodes(sItemID)) { MessageBox.Show("此项目存在子项目,不能删除!", "提示"); return; } if (oUnit.DeleteByID(sItemID)) { //写入日志 DBUtility.ClsPub.Add_Log("", "删除项目,代码:" + oUnitHlp.omodel.HNumber + ",名称:" + oUnitHlp.omodel.HName, DBUtility.ClsPub.CurUserName); //更新上级为 末级 MessageBox.Show("删除项目成功!", "提示"); Display(); } else MessageBox.Show("删除项目失败!" + DBUtility.ClsPub.sExeReturnInfo, "提示"); } } } } //取消按钮 private void cmdCancel_Click(object sender, EventArgs e) { InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_View; RefreshTool(); } //保存按钮 private void cmdOK_Click(object sender, EventArgs e) { if (!WriteClass()) return; if (Save()) { MessageBox.Show("保存完毕!", "提示"); } else { MessageBox.Show("保存失败!", "提示"); } if (InputMode == DBUtility.ClsPub.Enum_InputMode.InputMode_Modify) { InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_View; RefreshTool(); } } //树型 单击 private void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { CurNode = e.Node; if (CurNode != null) { frmCondition.SqlStr = ""; //找到选中结点 Display(); } } //删除 private void sc_Click(object sender, EventArgs e) { Delete(); } //新增按钮 private void xz_Click(object sender, EventArgs e) { InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_AddNew; Init(); } //修改 private void Modify() { if (DBUtility.Gy_BaseFun.AllowRow(grdMain)) { InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_Modify; RefreshTool(); Init(); } } //修改按钮 private void xg_Click(object sender, EventArgs e) { Modify(); } //初始化界面 private bool Init() { long sItemID; if (InputMode == DBUtility.ClsPub.Enum_InputMode.InputMode_AddNew) { Sub_Clear(); RefreshTool(); return true; } else if (InputMode == DBUtility.ClsPub.Enum_InputMode.InputMode_Modify) { //得到HITEMID sItemID = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HItemIDCol].Value); //检查是否存在 if (oUnitHlp.GetInfoByID(sItemID)) { ShowData(sItemID); txtHNumber.Focus(); return true; } else { MessageBox.Show("您选择的项目已经不存在!", "提示"); return false; } } else { return false; } } //保存 private bool Save() { if (InputMode == DBUtility.ClsPub.Enum_InputMode.InputMode_AddNew) { if (oUnit.AddNew()) { Init(); } else { return false; } Display(); } if (InputMode == DBUtility.ClsPub.Enum_InputMode.InputMode_Modify) { if (!oUnit.ModifyByID(HItemID)) { return false; } Display(); } return true; } //保存列宽 private void bclk_Click(object sender, EventArgs e) { DBUtility.ClsPub.SaveGridView(grdMain, this.Name, DBUtility.ClsPub.AppPath); } //默认列宽 private void mrlk_Click(object sender, EventArgs e) { DBUtility.ClsPub.DefaultGridView(grdMain); //参数解释 开始列 ,结束列,是否以最大列宽为准,最小列宽 DBUtility.ClsPub.SaveGridView(grdMain, this.Name, DBUtility.ClsPub.AppPath); } //时间控件 private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; Display(); } //删组 private void DeleteGroup() { if (CurNode.Name.Trim().Length == 0) return; if (DBUtility.ClsPub.isLong(CurNode.Name.Trim().Substring(1, CurNode.Name.Trim().Length - 1)) == 0) return; DAL.ClsGy_ClassTimePrjGroup_Ctl oUnitG = new DAL.ClsGy_ClassTimePrjGroup_Ctl(); if (MessageBox.Show("确定要删除选中的组吗?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.Cancel) { return; } else { oUnitG.DeleteByID(DBUtility.ClsPub.isLong(CurNode.Name.Trim().Substring(1, CurNode.Name.Trim().Length - 1))); } LoadTree(); } private void jz_Click(object sender, EventArgs e) { AddGroup(); } //增加组 private void AddGroup() { oUnitGroup = new Gy_ClassTimePrjGroup(); oUnitGroup.InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_AddNew; oUnitGroup.ShowDialog(); LoadTree(); } private void gz_Click(object sender, EventArgs e) { ModifyGroup(); } //改组 private void ModifyGroup() { oUnitGroup = new Gy_ClassTimePrjGroup(); if (CurNode.Name.Trim().Length == 0) return; if (DBUtility.ClsPub.isLong(CurNode.Name.Trim().Substring(1, CurNode.Name.Trim().Length - 1)) == 0) return; oUnitGroup.HItemID = DBUtility.ClsPub.isLong(CurNode.Name.Trim().Substring(1, CurNode.Name.Trim().Length - 1)); oUnitGroup.InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_Modify; oUnitGroup.ShowDialog(); LoadTree(); } private void sz_Click(object sender, EventArgs e) { DeleteGroup(); } //双击GRID private void grdMain_DblClick(object sender, EventArgs e) { Modify(); } //初始化GRID private void initGrid() { DBUtility.Gy_BaseFun.initGrid(grdMain); } //显示列表 private void Display() { SQLHelper.ClsCN SubCn = new SQLHelper.ClsCN(); DataSet DSet; string sSql = ""; string sWhere = ""; //刷新树形 //LoadTree(); //过滤条件 if (DBUtility.ClsPub.isStrNull(sCondition) == "" && frmCondition.SqlStr.Trim().Length != 0) { sSql = frmCondition.SqlStr + sWhere + " order by " + ModName + "代码"; } else if (DBUtility.ClsPub.isStrNull(sCondition) != "") { sSql = "Select * from " + ViewName + sCondition + sWhere + " order by " + ModName + "代码"; } else { sSql = "Select * from " + ViewName + " order by " + ModName + "代码"; } //执行SQL DSet = SubCn.RunProcReturn(sSql, ViewName, ref DBUtility.ClsPub.sExeReturnInfo); // if (DSet == null) { MessageBox.Show("显示失败!原因:" + DBUtility.ClsPub.sExeReturnInfo); return; } grdMain.DataSource = DSet.Tables[0].DefaultView; //禁用 红色显示 20141020 Sub_ShowStopFlag(); //加载列宽 DBUtility.Gy_BaseFun.DisplayGrid(grdMain, this.Name); // HItemIDCol = Fun_GetCol("HItemID"); HNumberCol = Fun_GetCol(ModName + "代码"); sCondition = ""; } #endregion #region 类的读写 //读取类 到 控件 private void ShowData(long sItemID) { DAL.ClsGy_Department_View oDept = new DAL.ClsGy_Department_View(); DAL.ClsGy_Group_View oGroup = new DAL.ClsGy_Group_View(); DAL.ClsGy_ClassTimePrjGroup_View oUnGpHlp = new DAL.ClsGy_ClassTimePrjGroup_View(); if (oUnitHlp.GetInfoByID(sItemID)) { txtHNumber.Text = oUnitHlp.omodel.HNumber; txtHName.Text = oUnitHlp.omodel.HName; txtHDeptID.Tag = oUnitHlp.omodel.HDeptID.ToString(); if (oDept.GetInfoByID(oUnitHlp.omodel.HDeptID)) { txtHDeptID.Text = oDept.omodel.HName; txtHDeptID.Tag = oDept.omodel.HItemID.ToString(); } else { txtHDeptID.Text = ""; } txtHGroupID.Text = oUnitHlp.omodel.HGroupID.ToString(); if (oGroup.GetInfoByID(oUnitHlp.omodel.HGroupID)) { txtHGroupID.Text = oGroup.omodel.HName; txtHGroupID.Tag = oGroup.omodel.HItemID.ToString(); } else { txtHGroupID.Text = ""; } txtHRemark.Text = oUnitHlp.omodel.HRemark; if (oUnitHlp.omodel.HStopflag) chkHStopflag.Checked = true; else chkHStopflag.Checked = false; HItemID = oUnitHlp.omodel.HItemID; if (oUnGpHlp.GetInfoByID(oUnitHlp.omodel.HParentID)) { txtHParentID.Text = oUnGpHlp.omodel.HName; txtHParentID.Tag = oUnGpHlp.omodel.HItemID; } else { txtHParentID.Text = ""; } } } //写入类 从控件 private bool WriteClass() { //判断是否允许 保存 if (!AllowSave()) { return false; } //检查父级是否存在 //写入信息 // oUnit.oModel.HDeptID = DBUtility.ClsPub.isLong(txtHDeptID.Tag.ToString()); oUnit.oModel.HStopflag = chkHStopflag.Checked; oUnit.oModel.HParentID = DBUtility.ClsPub.isLong(txtHParentID.Tag.ToString()); oUnit.oModel.HNumber = txtHNumber.Text.Trim(); oUnit.oModel.HName = txtHName.Text.Trim(); oUnit.oModel.HGroupID = DBUtility.ClsPub.isLong((txtHGroupID.Tag.ToString())); oUnit.oModel.HRemark = txtHRemark.Text.Trim(); return true; } #endregion #region 界面控件处理 //新增时清空信息 private void Sub_Clear() { //清空界面控件 for 控件 foreach (Control ct in tabPage2.Controls) { switch (ct.GetType().Name) { case "ListBox": ((ListBox)ct).Items.Clear(); break; case "CheckBox": ((CheckBox)ct).Checked = false; break; case "RadioButton": break; case "ComboBox": ((ComboBox)ct).SelectedIndex = 0; break; case "TextBox": ((TextBox)ct).Text = ""; break; case "DateTimePicker": ((DateTimePicker)ct).Value = DateTime.Today; break; default: break; } } // HItemID = 0; txtHNumber.Focus(); } private void txtHParentID_TextChanged(object sender, EventArgs e) { if (txtHParentID.Text.Trim() == "") txtHParentID.Tag = "0"; } //选组 private void button1_Click(object sender, EventArgs e) { DAL.ClsGy_ClassTimePrjGroup_View oUnGpHlp = new DAL.ClsGy_ClassTimePrjGroup_View(); if (oUnGpHlp.RefreshView()) { txtHParentID.Text = oUnGpHlp.oModel.HName; txtHParentID.Tag = oUnGpHlp.oModel.HItemID; } else { txtHParentID.Text = ""; } } private void txtHDeptID_TextChanged(object sender, EventArgs e) { if (txtHDeptID.Text.Trim() == "") txtHDeptID.Tag = "0"; } private void txtHGroupID_TextChanged(object sender, EventArgs e) { if (txtHGroupID.Text.Trim() == "") { txtHGroupID.Tag = "0"; txtHNumber.Text = ""; txtHName.Text = ""; } } private void cmdHDeptID_Click(object sender, EventArgs e) { DAL.ClsGy_Department_View oDept = new DAL.ClsGy_Department_View(); if (oDept.RefreshView()) { txtHDeptID.Tag = oDept.oModel.HItemID.ToString(); txtHDeptID.Text = oDept.oModel.HName; } else { txtHDeptID.Text = ""; } } private void cmdHGroupID_Click(object sender, EventArgs e) { DAL.ClsGy_Group_View oGroup = new DAL.ClsGy_Group_View(); if (oGroup.RefreshView()) { txtHGroupID.Text = oGroup.oModel.HName; txtHGroupID.Tag = oGroup.oModel.HItemID.ToString(); txtHNumber.Text = oGroup.oModel.HNumber; txtHName.Text = oGroup.oModel.HName; } else { txtHGroupID.Text = ""; } } #endregion //禁用项目 红色字体 20141020 public void Sub_ShowStopFlag() { BLL.ClsPub_BLL.Sub_ShowStopFlag(grdMain, Fun_GetCol("禁用标记")); } } }