/// <summary> /// 根据功能ID获取对应的空白临时表 /// </summary> /// <param name="functionName">功能名,作用:获取空白表格</param> /// <returns></returns> public DataTable GetTempdt(string functionName) { var resultDt = new DataTable(); switch (functionName) { //客户信息管理 case "Customer": resultDt = dlDtList.Get_CustEmptydt(); break; //供应商管理 case "Supplier": resultDt = dlDtList.Get_SupplierEmptydt(); break; //材料信息管理 case "Material": resultDt = dlDtList.Get_MaterialEmptydt(); break; //房屋类型及装修工程类别信息管理 case "House": resultDt = dlDtList.Get_HouseEmptydt(); break; //房屋类型及装修工程类别信息管理-类别项目名称 case "HouseProject": resultDt = dlDtList.Get_HouseProjectEmptydt(); break; //室内装修工程单 case "AdornOrder": resultDt = dlDtList.Get_AdornEmptydt(); break; //室内主材单 case "MaterialOrder": resultDt = dlDtList.Get_ProMaterialEmtrydt(); break; //室内装修工程单-表头记录(用于生成单据头使用) case "AdornOrderHead": resultDt = dlDtList.Get_ProAdorndt(); break; //室内主材单-表头记录(用于生成单据头使用) case "MaterialOrderHead": resultDt = dlDtList.Get_ProMaterialdt(); break; //室内主材单-树菜单记录(用于生成室内主材单-树菜单信息记录) case "MaterialOrderTree": resultDt = dlDtList.Get_ProMaterialTreedt(); break; // 获取历史单据记录 T_PRO_ADORN TypeInfoFrm.cs使用 case "HistoryAdornEmpty": resultDt = dlDtList.Get_HistoryAdornEmptydt(); break; //获取历史单据记录 T_PRO_MATERIAL TypeInfoFrm.cs使用 case "HistoryMaterial": resultDt = dlDtList.Get_HistoryMaterialEmptydt(); break; //获取基础信息库-装修工程明细记录临时表(TypeInform窗体使用) case "BDAdorn": resultDt = dlDtList.Get_BDHtypeEmptydt(); break; //获取基础信息库-材料明细记录临时表(TypeInform窗体使用) case "BDMaterial": resultDt = dlDtList.Get_BDMaterialEmptydt(); break; } return(resultDt); }
/// <summary> /// 删除GridView中所选择的行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Tmdelrow_Click(object sender, EventArgs e) { var tempdt = new DataTable(); try { if (tview.SelectedNode == null) { throw new Exception("请选择某一名称再继续"); } if (gvdtl.SelectedRows.Count == 0) { throw new Exception("请选取某一行,再继续"); } //检测当前用户是否有‘删除’权限 if (!_candelMarkid) { throw new Exception($"用户'{GlobalClasscs.User.StrUsrName}'没有‘删除’权限,不能继续."); } //检测若所选择行中的值已给其它地方使用,就不能进行删除(如:客户已让某一张单据使用,就不能进行删除) if (!CheckCanDel(1)) { throw new Exception($"检测到所选中的行中有已在其它地方使用的情况, \n故不能删除."); } var clickMessage = $"您所选择需删除的行数为:{gvdtl.SelectedRows.Count}行 \n 是否继续?"; if (MessageBox.Show(clickMessage, "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { //注:执行方式 判断若所选择的行内的 row[1](即各功能的表体主键)项 有值,就执行下面第一步,若没有;只需将在GridView内的行删除就行 //1)将所选择的行保存到_deldt内(在按“保存”时执行对该行的数据库删除) //根据各功能ID创建对应临时表 switch (GlobalClasscs.Basic.BasicId) { //客户信息管理 case 1: tempdt = dtList.Get_CustEmptydt(); break; //供应商信息管理 case 2: tempdt = dtList.Get_SupplierEmptydt(); break; //材料信息管理 case 3: tempdt = dtList.Get_MaterialEmptydt(); break; //房屋类型及装修工程类别信息管理 case 4: tempdt = dtList.Get_HouseEmptydt(); break; } //将所选择的记录赋值至tempdt临时表内 foreach (DataGridViewRow row in gvdtl.SelectedRows) { //若各功能表体的主键不为空时,才进行记录(如:客户信息管理 Custid不为空时,就执行插入临时表操作) if (row.Cells[1].Value.ToString() != "") { var row1 = tempdt.NewRow(); for (var i = 0; i < tempdt.Columns.Count; i++) { row1[i] = row.Cells[i].Value; } tempdt.Rows.Add(row1); } } //若tempdt有值才赋值至_dtldt内,(供保存使用) if (tempdt.Rows.Count > 0) { _deldt = tempdt; } //最后使用循环将所选择的行在GridView内删除 for (var i = gvdtl.SelectedRows.Count; i > 0; i--) { gvdtl.Rows.RemoveAt(gvdtl.SelectedRows[i - 1].Index); } } } catch (Exception ex) { MessageBox.Show(ex.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } }