using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Pub_Control { public partial class frm_G_BillQueryCondition_Base : Form { public frm_G_BillQueryCondition_Base() { InitializeComponent(); } const int IDCol = 0; const int BracketLCol = 1; const int FieldNameCol = 2; const int ControlCol = 3; const int ConditionCol = 4; const int BracketRCol = 5; const int RelationCol = 6; const int FindCol = 7; // public string SqlStr = ""; public string FieldsArray = ""; public string mvarViewName = ""; public int CopyRow = 0; public string CopyField = ""; public string CopyDataType = ""; public bool Copyed; public Form oFrm; public string ModName; public string ViewName; Pub_Class.ClsSqlHelper oCn = new Pub_Class.ClsSqlHelper(); Clsxt_ICSchemeMain oItem = new Clsxt_ICSchemeMain(); public Pub_Class.ClsPub.Enum_BillStatus BillStatus; //当前选中方案ID Int64 HInterID = 0; // #region 固定代码 //初始化GRID public void SetViewName(string sViewName,bool b) //Lock { string[] tArray; DataSet Ds=new DataSet(); int j; if(Pub_Class.ClsPub.isStrNull(sViewName).Length==0) { return; } //grdCondition.Redraw = VSFlex7.RedrawSettings.flexRDNone; mvarViewName = sViewName; Ds=oCn.RunProcReturn("select column_name,data_type from information_schema.columns where table_name ='" + ViewName.Trim() + "' order by ORDINAL_POSITION", "information"); grdCondition.RowCount = 1; for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { //grid1 grdCondition.RowCount = i + 1; grdCondition.Rows[i].Cells[FieldNameCol].Value = Ds.Tables[0].Rows[i]["column_name"].ToString().Trim(); grdCondition.Rows[i].Cells[IDCol].Value = Ds.Tables[0].Rows[i]["data_type"].ToString().Trim(); // DataGridViewComboBoxCell sCellRel = new DataGridViewComboBoxCell(); sCellRel.FlatStyle = FlatStyle.System; sCellRel.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; sCellRel.DropDownWidth = 10; sCellRel.Items.Add("并且"); sCellRel.Items.Add("或者"); grdCondition.Rows[i].Cells[RelationCol] = sCellRel; grdCondition.Rows[i].Cells[6].Value = "并且"; // DataGridViewComboBoxCell sCellCom = new DataGridViewComboBoxCell(); sCellCom.FlatStyle = FlatStyle.System; sCellCom.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; sCellCom.DropDownWidth = 10; sCellCom.Items.Add(" "); sCellCom.Items.Add("="); sCellCom.Items.Add(">"); sCellCom.Items.Add(">="); sCellCom.Items.Add("<"); sCellCom.Items.Add("<="); sCellCom.Items.Add("<>"); sCellCom.Items.Add("包含"); sCellCom.Items.Add("左包含"); sCellCom.Items.Add("右包含"); grdCondition.Rows[i].Cells[ControlCol] = sCellCom; // // if (Ds.Tables[0].Rows[i]["column_name"].ToString().Trim().ToUpper().Substring(0, 1) == "H")//H开头的列隐藏 { grdCondition.Rows[i].Visible = false; } // DataGridViewCheckBoxCell sCell = new DataGridViewCheckBoxCell(); sCell.ThreeState = false; sCell.Value = 1; } if (!b) { Sub_GetSchemeInfo(); } } // private bool GetSql() //Lock { string tSql = ""; string tFilter = ""; string sEngCondi = ""; string sLinkCondi = ""; FieldsArray = tSql; //得到显示项目 string HeadSql = ""; HeadSql = ""; // tSql = "select * " + HeadSql + " from " + mvarViewName.Trim() + " Where 1=1 "; for (int i = 0; i < grdCondition.RowCount; i++) { sEngCondi = CHStoENG(Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[3].Value)); sLinkCondi = CHStoENG(Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[6].Value)); // and or if (sEngCondi.Trim().Length != 0) { switch (sEngCondi.Trim().ToUpper()) { case "LIKE": tFilter = tFilter + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + " LIKE '%" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value).Trim().Replace("'", "''") + "%' " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value) + " " + sLinkCondi.Trim() + " "; break; case "LIKEL": tFilter = tFilter + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + " LIKE '" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value).Trim().Replace("'", "''") + "%' " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value) + " " + sLinkCondi.Trim() + " "; break; case "LIKER": tFilter = tFilter + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + " LIKE '%" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value).Trim().Replace("'", "''") + "' " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value) + " " + sLinkCondi.Trim() + " "; break; default: switch (Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[0].Value).Trim().ToUpper()) { case "BIT": tFilter = tFilter + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + sEngCondi + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value).Trim() + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value) + " " + sLinkCondi.Trim() + " "; break; case "MONEY": tFilter = tFilter + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + sEngCondi + "" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value) + " " + sLinkCondi.Trim() + " "; break; case "DECIMAL": tFilter = tFilter + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + sEngCondi + "" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value) + " " + sLinkCondi.Trim() + " "; break; default: tFilter = tFilter + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + " " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + sEngCondi + "'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value) + "' " + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value) + " " + sLinkCondi.Trim() + " "; break; } break; } } else { if (Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value).Trim().Length != 0 || Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value).Trim().Length != 0) { MessageBox.Show("第" + i.ToString() + "行没有条件,不应该有括号出现,请取消此括号!", "提示"); return false; } } } if (tFilter.Trim().Length != 0) { tFilter = tFilter.Substring(0, tFilter.Trim().Length - 3); SqlStr = tSql + " AND " + tFilter; } else { SqlStr = tSql; } return true; } #endregion // private void cmdCancel_Click(object sender, EventArgs e) { this.Tag = "CANCEL"; SetViewName(mvarViewName,false); this.Visible = false; } // private void cmdOk_Click(object sender, EventArgs e) { Sub_SaveSchemeInfo(); if (GetSql()) { this.Tag = "OK"; this.Visible=false; } } //读取方案信息 private void Sub_GetSchemeInfo() //Lock { //当前选中方案,若没有选中则为 默认方案,若不存在默认方案则自动新增 if (HInterID == 0) { if (oItem.ShowDefault(this.ModName)) { HInterID = oItem.HInterID; } else//不存在则 生成默认方案 { return; } } if (!oItem.ShowBill(HInterID, ref Pub_Class.ClsPub.sExeReturnInfo)) return; foreach (Clsxt_ICSchemeSub oSub in oItem.DetailColl) { //循环控件,找到则赋值 foreach (Control ct in this.tabPage1.Controls) { if (oSub.HKey.Trim().ToLower() == ct.Name.Trim().ToLower()) { if (ct.Name.Trim().ToLower().Substring(0, 3) == "txt" || ct.Name.Trim().ToLower().Substring(0, 3) == "cmb") { ct.Text = oSub.HValue.Trim(); } } } //foreach (Control ct in this.panel8.Controls) //{ // if (oSub.HKey.Trim().ToLower() == ct.Name.Trim().ToLower()) // { // if (ct.Name.Trim().ToLower().Substring(0, 3) == "txt" || ct.Name.Trim().ToLower().Substring(0, 3) == "cmb") // { // ct.Text = oSub.HValue.Trim(); // } // } //} } //得到3个GRID try { Pub_Class.ClsSqlHelper oCn2 = new Pub_Class.ClsSqlHelper(); DataSet DSet; for (int i = 0; i < grdCondition.RowCount; i++) { DSet = oCn2.RunProcReturn("select * from Xt_grdCondition where HInterID=" + HInterID.ToString() + " and HRow=" + i, "Xt_grdCondition"); if (Pub_Class.ClsPub.isInt(DSet.Tables[0].Rows.Count) != 0) { grdCondition.Rows[i].Cells[0].Value = DSet.Tables[0].Rows[0]["HIDCol"]; grdCondition.Rows[i].Cells[1].Value = DSet.Tables[0].Rows[0]["HBracketLCol"]; grdCondition.Rows[i].Cells[2].Value = DSet.Tables[0].Rows[0]["HFieldNameCol"]; grdCondition.Rows[i].Cells[3].Value = DSet.Tables[0].Rows[0]["HControlCol"]; grdCondition.Rows[i].Cells[4].Value = DSet.Tables[0].Rows[0]["HConditionCol"]; grdCondition.Rows[i].Cells[5].Value = DSet.Tables[0].Rows[0]["HBracketRCol"]; grdCondition.Rows[i].Cells[6].Value = DSet.Tables[0].Rows[0]["HRelationCol"]; if (DSet.Tables[0].Rows[0]["HFieldNameCol"].ToString().Trim().ToUpper().Substring(0, 1) == "H")//H开头的列隐藏 { grdCondition.Rows[i].Visible = false; } else { grdCondition.Rows[i].Visible = true; } } } DSet = null; //for (int i = 0; i < grdField.RowCount; i++) //{ // DSet = oCn2.RunProcReturn("select * from Xt_grdField where HInterID=" + HInterID.ToString() + " and HRow=" + i, "Xt_grdField"); // if (Pub_Class.ClsPub.isInt(DSet.Tables[0].Rows.Count) != 0) // { // grdField.Rows[i].Cells[0].Value = DSet.Tables[0].Rows[0]["HFiFieldName"]; // grdField.Rows[i].Cells[1].Value = DSet.Tables[0].Rows[0]["HFiNo"]; // grdField.Rows[i].Cells[2].Value = Pub_Class.ClsPub.isBool(DSet.Tables[0].Rows[0]["HFiShow"]); // if (Pub_Class.ClsPub.isStrNull(DSet.Tables[0].Rows[0]["HFiDuiQi"]) == "") // { // grdField.Rows[i].Cells[3].Value = "左对齐"; // } // else // { // grdField.Rows[i].Cells[3].Value = DSet.Tables[0].Rows[0]["HFiDuiQi"]; // } // if (Pub_Class.ClsPub.isInt(DSet.Tables[0].Rows[0]["HDec"]) < 0 || Pub_Class.ClsPub.isInt(DSet.Tables[0].Rows[0]["HDec"]) > 9) // { // grdField.Rows[i].Cells[4].Value = ""; // } // else // { // grdField.Rows[i].Cells[4].Value = Pub_Class.ClsPub.isInt(DSet.Tables[0].Rows[0]["HDec"]); // } // if (DSet.Tables[0].Rows[0]["HFiNo"].ToString().Trim().ToUpper().Substring(0, 1) == "H")//H开头的列隐藏 // { // grdField.Rows[i].Visible = false; // } // else // { // grdField.Rows[i].Visible = true; // } // } //} oCn2.CnClose(); oCn2.CnDispose(); } catch (Exception e) { return; } } // private bool Sub_DeleteSchemeInfo() { MessageBox.Show("此功能有待完善!"); return false; } //保存方案 private bool Sub_SaveSchemeInfo() //Lock { if (HInterID == 0) { if (oItem.ShowDefault(this.ViewName))//保存当前选中方案,若没有选中则为 默认方案 { HInterID = oItem.HInterID; BillStatus = Pub_Class.ClsPub.Enum_BillStatus.BillStatus_Modify; } else//不存在则 生成默认方案 { BillStatus = Pub_Class.ClsPub.Enum_BillStatus.BillStatus_AddNew; } } else { BillStatus = Pub_Class.ClsPub.Enum_BillStatus.BillStatus_Modify; } //加载到类 oItem.HBillName = ModName; oItem.HBillType = oItem.MvarItemKey; oItem.HStopflag = false; oItem.HUserCode = Pub_Class.ClsPub.CurUserName; // oItem.DetailColl.Clear(); foreach (Control ct in this.tabPage1.Controls) { Clsxt_ICSchemeSub oSub = new Clsxt_ICSchemeSub(); if (ct.Name.Trim().ToLower().Substring(0, 3) == "txt" || ct.Name.Trim().ToLower().Substring(0, 3) == "cmb") { oSub.HKey = ct.Name.Trim(); oSub.HValue = ct.Text.Trim(); oSub.HInterID = this.HInterID; oItem.DetailColl.Add(oSub); } } //foreach (Control ct in this.panel8.Controls) //{ // Clsxt_ICSchemeSub oSub = new Clsxt_ICSchemeSub(); // if (ct.Name.Trim().ToLower().Substring(0, 3) == "txt" || ct.Name.Trim().ToLower().Substring(0, 3) == "cmb") // { // oSub.HKey = ct.Name.Trim(); // oSub.HValue = ct.Text.Trim(); // oSub.HInterID = this.HInterID; // oItem.DetailColl.Add(oSub); // } //} // if (lvScheme.FocusedItem == null) { oItem.HName = "默认方案"; } else { oItem.HName = lvScheme.FocusedItem.Text; } if (BillStatus == Pub_Class.ClsPub.Enum_BillStatus.BillStatus_Modify) { if (!oItem.ModifyBill(HInterID, ref Pub_Class.ClsPub.sExeReturnInfo)) return false; } else if (BillStatus == Pub_Class.ClsPub.Enum_BillStatus.BillStatus_AddNew) { if (!oItem.AddBill(ref Pub_Class.ClsPub.sExeReturnInfo, HInterID)) return false; else HInterID = oItem.HInterID; } else { return false; } //保存3个GRID try { Pub_Class.ClsSqlHelper oCn1 = new Pub_Class.ClsSqlHelper(); oCn1.RunProc("delete Xt_grdCondition where HInterID=" + HInterID.ToString()); for (int i = 0; i < grdCondition.RowCount; i++) { oCn1.RunProc("Insert Into Xt_grdCondition " + "(HInterID,HUserID,HBillName,HRow,HIDCol,HBracketLCol,HFieldNameCol,HControlCol" + ",HConditionCol,HBracketRCol,HRelationCol" + ") " + " values(" + HInterID.ToString() + ",'" + Pub_Class.ClsPub.CurUserName + "','" + ViewName.Trim() + "'," + i + ",'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[0].Value) + "'" + ",'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[1].Value) + "'" + ",'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[2].Value) + "'" + ",'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[3].Value) + "'" + ",'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[4].Value).Replace("'", "''") + "'" + ",'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[5].Value).Replace("'", "''") + "'" + ",'" + Pub_Class.ClsPub.isStrNull(grdCondition.Rows[i].Cells[6].Value) + "')"); } oCn1.RunProc("delete Xt_grdField where HinterID=" + HInterID.ToString()); //for (int i = 0; i < grdField.RowCount; i++) //{ // oCn1.RunProc("Insert Into Xt_grdField " + // "(HInterID,HUserID,HBillName,HRow,HFiFieldName,HFiNo,HFiShow,HFiDuiQi" + // ") " + // " values(" + HInterID.ToString() + ",'" + Pub_Class.ClsPub.CurUserName + "','" + ViewName.Trim() + "'," + i + // ",'" + Pub_Class.ClsPub.isStrNull(grdField.Rows[i].Cells[0].Value) + "'" + // ",'" + Pub_Class.ClsPub.isStrNull(grdField.Rows[i].Cells[1].Value) + "'" + // "," + Convert.ToString(Pub_Class.ClsPub.isBool(grdField.Rows[i].Cells[2].Value) ? 1 : 0) + // ",'" + Pub_Class.ClsPub.isStrNull(grdField.Rows[i].Cells[3].Value) + "'" + // ")"); //} oCn1.CnClose(); oCn1.CnDispose(); return true; } catch (Exception e) { Pub_Class.ClsPub.sExeReturnInfo = Pub_Class.ClsPub.sExeReturnInfo + e.Message; return false; } } private void initGrid() { grdCondition.RowTemplate.Height = 18; grdCondition.RowTemplate.MinimumHeight = 18; grdCondition.ColumnHeadersHeight = 35; grdCondition.RowHeadersVisible = false; grdCondition.ColumnHeadersVisible = true; grdCondition.ColumnCount = 7; grdCondition.RowCount = 1; grdCondition.EnableHeadersVisualStyles = false; grdCondition.AllowUserToAddRows = false; //是否允许自增--否 grdCondition.AllowUserToDeleteRows = false; //是否允许删除--否 grdCondition.AllowUserToResizeColumns = true; //允许调整列宽--是 grdCondition.AllowUserToResizeRows = false; //允许调整行高--否 grdCondition.AllowUserToOrderColumns = false; grdCondition.GridColor = Color.LightGray; grdCondition.Columns[BracketLCol].HeaderText = "左括号"; grdCondition.Columns[FieldNameCol].HeaderText = "字段名称"; grdCondition.Columns[ControlCol].HeaderText = "比较关系"; grdCondition.Columns[ConditionCol].HeaderText = "数值"; grdCondition.Columns[BracketRCol].HeaderText = "右括号"; grdCondition.Columns[RelationCol].HeaderText = "逻辑"; // grdCondition.EditMode = DataGridViewEditMode.EditOnEnter; //编辑模式 grdCondition.RowsDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight; grdCondition.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; grdCondition.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing; //允许用户调整列宽 grdCondition.Columns[IDCol].Visible = false; grdCondition.Columns[BracketLCol].Width = 50; grdCondition.Columns[FieldNameCol].Width = 120; grdCondition.Columns[ControlCol].Width = 60; grdCondition.Columns[ConditionCol].Width = 90; grdCondition.Columns[BracketRCol].Width = 50; grdCondition.Columns[RelationCol].Width = 50; for (int i = 0; i < grdCondition.ColumnCount; i++) { grdCondition.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable; } } // //private void grdCondition_AfterEdit(object sender, AxVSFlex7._IVSFlexGridEvents_AfterEditEvent e) //{ // if (e.col == RelationCol) // { // if (grdCondition.get_TextMatrix(e.row, e.col) == null || grdCondition.get_TextMatrix(e.row, e.col).Length == 0) // { // grdCondition.set_TextMatrix(e.row, e.col," And "); // } // } //} // private string CHStoENG(string sCHS) //Lock { switch (sCHS) { case "包含": return "LIKE"; case "左包含": return "LIKEL"; case "右包含": return "LIKER"; case "并且": return "AND"; case "或者": return "OR"; default: return sCHS; } } // //private void grdCondition_BeforeEdit(object sender, AxVSFlex7._IVSFlexGridEvents_BeforeEditEvent e) //Lock //{ // string tStr = ""; // if (e.col == 2 || e.col == 1 || e.col == 5) // { // e.cancel = true; // return; // } // if (e.col == 3) // { // switch (grdCondition.get_TextMatrix(e.row,IDCol).ToUpper().Trim()) // { // case "NVARCHAR": // tStr =" " + // "|=" + // "|>" + // "|>=" + // "|<" + // "|<=" + // "|<>" + // "|包含" + // "|左包含" + // "|右包含"; // break; // case "CHAR": // tStr = " " + // "|=" + // "|>" + // "|>=" + // "|<" + // "|<=" + // "|<>" + // "|包含" + // "|左包含" + // "|右包含"; // break; // case "VARCHAR": // tStr = " " + // "|=" + // "|>" + // "|>=" + // "|<" + // "|<=" + // "|<>" + // "|包含" + // "|左包含" + // "|右包含"; // break; // case "BIT": // tStr = " " + // "|=" + // "|<>" ; // break; // default: // tStr = " " + // "|=" + // "|>" + // "|>=" + // "|<" + // "|<=" + // "|<>" + // "|包含" + // "|左包含" + // "|右包含"; // break; // } // grdCondition.set_ColComboList(3, tStr); // return; // } // if (e.col ==6) // { // tStr = "并且|或者"; // grdCondition.set_ColComboList(6, tStr); // return; // } // return; //} //验证 //private void grdCondition_ValidateEdit(object sender, AxVSFlex7._IVSFlexGridEvents_ValidateEditEvent e) //{ // if (e.col == 4) // { // switch (grdCondition.get_TextMatrix(e.row, IDCol ).Trim().ToUpper()) // { // case "MONEY": // //if (Pub_Class.ClsPub.IsNumeric(grdCondition.EditText) == false) // //{ // e.cancel = true; // //} // break; // case "INT": // //if (Pub_Class.ClsPub.IsNumeric(grdCondition.EditText)==false ) // //{ // e.cancel = true; // //} // break; // case "FLOAT": // //if (Pub_Class.ClsPub.IsNumeric(grdCondition.EditText) == false) // //{ // e.cancel = true; // //} // break; // default: // break; // } // } //} private void frm_G_BillQueryCondition_Base_Load(object sender, EventArgs e) { initGrid(); } private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; SetViewName(ViewName,false); } //加括号 private void cmdBracket_Click(object sender, EventArgs e) //Lock { int BRow = -1, ERow = 0; if (grdCondition.SelectedCells == null || grdCondition.SelectedCells.Count == 0) { return; } //找最大行,最小行 for (int i = 0; i < grdCondition.SelectedCells.Count; i++) { if (grdCondition.SelectedCells[i].RowIndex > ERow) { ERow = grdCondition.SelectedCells[i].RowIndex; } if (BRow == -1) { BRow = grdCondition.SelectedCells[i].RowIndex; } else { if (grdCondition.SelectedCells[i].RowIndex < BRow) { BRow = grdCondition.SelectedCells[i].RowIndex; } } } // if (BRow != -1) { grdCondition.Rows[BRow].Cells[BracketLCol].Value = Pub_Class.ClsPub.isStrNull(grdCondition.Rows[BRow].Cells[BracketLCol].Value) + "("; grdCondition.Rows[ERow].Cells[BracketRCol].Value = Pub_Class.ClsPub.isStrNull(grdCondition.Rows[ERow].Cells[BracketRCol].Value) + ")"; } } //减括号 private void cmdUNBracket_Click(object sender, EventArgs e) //Lock { int BRow = -1, ERow = 0; if (grdCondition.SelectedCells == null || grdCondition.SelectedCells.Count == 0) { return; } //找最大行,最小行 for (int i = 0; i < grdCondition.SelectedCells.Count; i++) { if (grdCondition.SelectedCells[i].RowIndex > ERow) { ERow = grdCondition.SelectedCells[i].RowIndex; } if (BRow == -1) { BRow = grdCondition.SelectedCells[i].RowIndex; } else { if (grdCondition.SelectedCells[i].RowIndex < BRow) { BRow = grdCondition.SelectedCells[i].RowIndex; } } } // if (Pub_Class.ClsPub.isStrNull(grdCondition.Rows[BRow].Cells[BracketLCol].Value) != "" && Pub_Class.ClsPub.isStrNull(grdCondition.Rows[ERow].Cells[BracketRCol].Value) != "") { string s; s = Pub_Class.ClsPub.isStrNull(grdCondition.Rows[BRow].Cells[BracketLCol].Value); grdCondition.Rows[BRow].Cells[BracketLCol].Value = s.Substring(0, s.Length - 1); s = ""; s = Pub_Class.ClsPub.isStrNull(grdCondition.Rows[ERow].Cells[BracketRCol].Value); grdCondition.Rows[ERow].Cells[BracketRCol].Value = s.Substring(0, s.Length - 1); } else { if (Pub_Class.ClsPub.isStrNull(grdCondition.Rows[BRow].Cells[BracketLCol].Value) == "") { MessageBox.Show("选择的第一行没有括号!", "提示"); } else { MessageBox.Show("选择的最后一行没有括号!", "提示"); } } } //复制 private void cmdCopy_Click(object sender, EventArgs e) { if (grdCondition.CurrentRow != null) { CopyField = Pub_Class.ClsPub.isStrNull(grdCondition.Rows[grdCondition.CurrentRow.Index].Cells[FieldNameCol].Value); CopyDataType = Pub_Class.ClsPub.isStrNull(grdCondition.Rows[grdCondition.CurrentRow.Index].Cells[IDCol].Value); cmdPaste.Enabled = true; } } //黏贴 private void cmdPaste_Click(object sender, EventArgs e) { grdCondition.Rows.Insert(grdCondition.CurrentRow.Index, 1); // grdCondition.Rows[grdCondition.CurrentRow.Index - 1].Cells[IDCol].Value = CopyDataType; grdCondition.Rows[grdCondition.CurrentRow.Index - 1].Cells[FieldNameCol].Value = CopyField; DataGridViewComboBoxCell sCellRel = new DataGridViewComboBoxCell(); sCellRel.FlatStyle = FlatStyle.System; sCellRel.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; sCellRel.DropDownWidth = 10; sCellRel.Items.Add("并且"); sCellRel.Items.Add("或者"); grdCondition.Rows[grdCondition.CurrentRow.Index - 1].Cells[RelationCol] = sCellRel; grdCondition.Rows[grdCondition.CurrentRow.Index - 1].Cells[RelationCol].Value = "并且"; // DataGridViewComboBoxCell sCellCom = new DataGridViewComboBoxCell(); sCellCom.FlatStyle = FlatStyle.System; sCellCom.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing; sCellCom.DropDownWidth = 10; sCellCom.Items.Add(" "); sCellCom.Items.Add("="); sCellCom.Items.Add(">"); sCellCom.Items.Add(">="); sCellCom.Items.Add("<"); sCellCom.Items.Add("<="); sCellCom.Items.Add("<>"); sCellCom.Items.Add("包含"); sCellCom.Items.Add("左包含"); sCellCom.Items.Add("右包含"); grdCondition.Rows[grdCondition.CurrentRow.Index - 1].Cells[ControlCol] = sCellCom; // } //删除 private void cmdDelete_Click(object sender, EventArgs e) { if (grdCondition.CurrentRow != null) { //if (ClsPub.isStrNull(grdCondition.get_TextMatrix(grdCondition.Row, BracketLCol)) != "" // || ClsPub.isStrNull(grdCondition.get_TextMatrix(grdCondition.Row, BracketRCol)) != "") //{ // MessageBox.Show("被删除行不能有括号!", "提示"); // return; //} grdCondition.Rows.RemoveAt(grdCondition.CurrentRow.Index); } } //恢复 private void cmdRestore_Click(object sender, EventArgs e) { SetViewName(ViewName,true); } public virtual void Sub_GridKey(int sKeyCode, int sRow, int sCol, DataGridView grdCondition) { // } private void grdCondition_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) { if (grdCondition.CurrentCell.ColumnIndex != ControlCol && grdCondition.CurrentCell.ColumnIndex != ConditionCol && grdCondition.CurrentCell.ColumnIndex != RelationCol) { e.Cancel = true; } else { // } } // } }