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_S_BillQueryCondition_Base : Form
|
{
|
public frm_S_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 = "";
|
private string mvarViewName = "";
|
private int CopyRow = 0;
|
private string CopyField = "";
|
private string CopyDataType = "";
|
private bool Copyed;
|
public Pub_Class.ClsPub.Enum_OKTag OKTag;
|
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;
|
//
|
public void SetViewName(string sViewName,bool b)
|
{
|
string[] tArray;
|
DataSet Ds = new DataSet();
|
int j;
|
if (Pub_Class.ClsPub.isStrNull(sViewName).Length == 0)
|
{
|
return;
|
}
|
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 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 HUserID='" + Pub_Class.ClsPub.CurUserName + "' and HBillName='" + ViewName.Trim() + "' 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"];
|
}
|
}
|
}
|
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 (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)
|
{
|
oItem.HName = "默认方案";
|
if (!oItem.AddBill(ref Pub_Class.ClsPub.sExeReturnInfo, HInterID))
|
return false;
|
}
|
else
|
{
|
return false;
|
}
|
//保存3个GRID
|
try
|
{
|
Pub_Class.ClsSqlHelper oCn1 = new Pub_Class.ClsSqlHelper();
|
oCn1.RunProc("delete Xt_grdCondition where HUserID='" + Pub_Class.ClsPub.CurUserName + "' and HBillName='" + ViewName.Trim() + "'");
|
for (int i = 0; i < grdCondition.RowCount; i++)
|
{
|
|
oCn1.RunProc("Insert Into Xt_grdCondition " +
|
"(HUserID,HBillName,HRow,HIDCol,HBracketLCol,HFieldNameCol,HControlCol" +
|
",HConditionCol,HBracketRCol,HRelationCol" +
|
") " +
|
" values('" + 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) + "')");
|
}
|
return true;
|
}
|
catch (Exception e)
|
{
|
return false;
|
}
|
|
}
|
|
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 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 frm_S_BillQueryCondition_Base_Load(object sender, EventArgs e)
|
{
|
initGrid();
|
}
|
|
private void timer1_Tick(object sender, EventArgs e)
|
{
|
timer1.Enabled = false;
|
SetViewName(ViewName,false);
|
}
|
|
|
private string CHStoENG(string sCHS)
|
{
|
switch (sCHS)
|
{
|
case "包含":
|
return "LIKE";
|
case "左包含":
|
return "LIKEL";
|
case "右包含":
|
return "LIKER";
|
case "并且":
|
return "AND";
|
case "或者":
|
return "OR";
|
default:
|
return sCHS;
|
|
}
|
}
|
|
//private void grdMain_BeforeEdit(object sender, AxVSFlex7._IVSFlexGridEvents_BeforeEditEvent e)
|
//{
|
// 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 grdMain_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 bool GetSql() //Lock
|
{
|
string tSql = "";
|
string tFilter = "";
|
string sEngCondi = "";
|
string sLinkCondi = "";
|
FieldsArray = tSql;
|
//得到显示项目
|
string HeadSql = "";
|
HeadSql = "";
|
//
|
tSql = "select Top 5000 * " + 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;
|
}
|
|
//加括号
|
private void cmdBracket_Click(object sender, EventArgs e)
|
{
|
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)
|
{
|
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_GridKeyView(int sKeyCode, int sRow, int sCol, DataGridView grdCondition, DataGridViewTextBoxEditingControl oEdit)
|
{
|
//
|
}
|
|
DataGridViewTextBoxEditingControl EditingControl;
|
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
|
{
|
//
|
}
|
}
|
|
private void EditingControl_KeyDown(object sender, KeyEventArgs e)
|
{
|
//业务处理
|
Sub_GridKeyView(e.KeyValue, grdCondition.CurrentRow.Index, grdCondition.CurrentCell.ColumnIndex, grdCondition, EditingControl);
|
}
|
|
|
private void grdCondition_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
|
{
|
if (grdCondition.CurrentCell != null)
|
{
|
if (e.Control is DataGridViewTextBoxEditingControl)
|
{
|
this.EditingControl = (DataGridViewTextBoxEditingControl)e.Control;
|
//增加委托处理
|
this.EditingControl.KeyDown += new KeyEventHandler(this.EditingControl_KeyDown);
|
}
|
|
}
|
}
|
|
private void grdCondition_CellEndEdit(object sender, DataGridViewCellEventArgs e)
|
{
|
if (this.EditingControl != null)
|
{
|
EditingControl.KeyDown -= new KeyEventHandler(this.EditingControl_KeyDown);
|
this.EditingControl = null;
|
}
|
}
|
|
private void grdCondition_KeyDown(object sender, KeyEventArgs e)
|
{
|
Sub_GridKeyView(e.KeyValue, grdCondition.CurrentRow.Index, grdCondition.CurrentCell.ColumnIndex, grdCondition, EditingControl);
|
}
|
}
|
}
|