/// <summary> /// 删除显示窗体选中选中的行 /// </summary> /// <param name="listEntity"></param> public void delListItem(GridOilListView dgvList) { if (dgvList.Items.Count <= 0) { return; } int selIndex = dgvList.SelectedIndices[0]; if (dgvList.Items.Count == 1) //只有一行则直接删除 { dgvList.Items.Clear(); //从显示的数据源中删除 } else if (dgvList.Items.Count == 2) { #region "存在两个元素" if (dgvList.SelectedItems[0].SubItems["逻辑"].Text.Contains("Or") && dgvList.SelectedItems[0].SubItems["左括号"].Text.Contains("(")) //左侧不包括"("的Or情况 { dgvList.Items[selIndex + 1].SubItems["右括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["右括号"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } else if (dgvList.SelectedItems[0].SubItems["逻辑"].Text.Contains("And")) { dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } else if (dgvList.SelectedItems[0].SubItems["逻辑"].Text == "" && dgvList.SelectedItems[0].SubItems["右括号"].Text.Contains(")")) { dgvList.Items[selIndex - 1].SubItems["左括号"].Text = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Text = ""; dgvList.Items[selIndex - 1].SubItems["左括号"].Tag = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } else if (dgvList.SelectedItems[0].SubItems["逻辑"].Text == "" && !dgvList.SelectedItems[0].SubItems["右括号"].Text.Contains(")")) { dgvList.Items[selIndex - 1].SubItems["逻辑"].Text = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } #endregion } else if (dgvList.Items.Count > 2) { #region "范围表的显示的元素大于2" if (dgvList.SelectedItems[0].SubItems["逻辑"].Text.Contains("Or") && !dgvList.SelectedItems[0].SubItems["左括号"].Text.Contains("(")) //左侧不包括"("的Or情况 { dgvList.Items.RemoveAt(selIndex); //从显示的数据源中删除 } else if (dgvList.SelectedItems[0].SubItems["逻辑"].Text.Contains("Or") && dgvList.SelectedItems[0].SubItems["左括号"].Text.Contains("("))//左侧包括"("的Or情况 { #region if (selIndex >= 1) { #region "selIndex >= 1" ListViewItem selectListViewItem = dgvList.Items[selIndex + 1]; if (selectListViewItem == null)//不正常情况,无法删除 { return; } if (selectListViewItem.SubItems["逻辑"].Text.Contains("Or"))//先修改后删除 { dgvList.Items[selIndex + 1].SubItems["左括号"].Text = "("; dgvList.Items[selIndex + 1].SubItems["逻辑"].Text = "Or"; dgvList.Items[selIndex + 1].SubItems["左括号"].Tag = "("; dgvList.Items[selIndex + 1].SubItems["逻辑"].Tag = "Or"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } else if (selectListViewItem.SubItems["逻辑"].Text.Contains("And")) { dgvList.Items[selIndex + 1].SubItems["左括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["右括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["逻辑"].Text = "And"; dgvList.Items[selIndex + 1].SubItems["左括号"].Tag = ""; dgvList.Items[selIndex + 1].SubItems["右括号"].Tag = ""; dgvList.Items[selIndex + 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex); //从显示的数据源中删除 } else if (selectListViewItem.SubItems["逻辑"].Text == "") //先修改后删除 { dgvList.Items[selIndex + 1].SubItems["左括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["右括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["逻辑"].Text = ""; dgvList.Items[selIndex + 1].SubItems["左括号"].Tag = ""; dgvList.Items[selIndex + 1].SubItems["右括号"].Tag = ""; dgvList.Items[selIndex + 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } #endregion } else if (selIndex == 0) { #region "selIndex == 0" ListViewItem selectListViewItem = dgvList.Items[selIndex + 1]; if (selectListViewItem == null)//不正常情况,无法删除 { return; } if (selectListViewItem.SubItems["逻辑"].Text.Contains("Or")) { dgvList.Items[selIndex + 1].SubItems["左括号"].Text = "("; dgvList.Items[selIndex + 1].SubItems["逻辑"].Text = "Or"; dgvList.Items[selIndex + 1].SubItems["左括号"].Tag = "("; dgvList.Items[selIndex + 1].SubItems["逻辑"].Tag = "Or"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } else if (selectListViewItem.SubItems["逻辑"].Text.Contains("And")) { dgvList.Items[selIndex + 1].SubItems["左括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["右括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["逻辑"].Text = "And"; dgvList.Items[selIndex + 1].SubItems["左括号"].Tag = ""; dgvList.Items[selIndex + 1].SubItems["右括号"].Text = ""; dgvList.Items[selIndex + 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } #endregion } #endregion } else if (dgvList.SelectedItems[0].SubItems["逻辑"].Text.Contains("And")) { #region if (selIndex >= 1)//选择不是第一个元素 { if (dgvList.SelectedItems[0].SubItems["右括号"].Text.Contains(")")) { #region "选择不是第一个元素的And删除" ListViewItem selectListViewItem = dgvList.Items[selIndex - 1]; if (selectListViewItem == null)//不正常情况,无法删除 { return; } if (selectListViewItem.SubItems["逻辑"].Text.Contains("Or") && selectListViewItem.SubItems["左括号"].Text.Contains("(")) { dgvList.Items[selIndex - 1].SubItems["左括号"].Text = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Text = "And"; dgvList.Items[selIndex - 1].SubItems["左括号"].Tag = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } else if (selectListViewItem.SubItems["逻辑"].Text.Contains("Or") && selectListViewItem.SubItems["左括号"].Text == "" && selectListViewItem.SubItems["右括号"].Text == "") { dgvList.Items[selIndex - 1].SubItems["右括号"].Text = ")"; dgvList.Items[selIndex - 1].SubItems["逻辑"].Text = "And"; dgvList.Items[selIndex - 1].SubItems["右括号"].Tag = ")"; dgvList.Items[selIndex - 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } #endregion } else if (dgvList.SelectedItems[0].SubItems["左括号"].Text.Contains("") && dgvList.SelectedItems[0].SubItems["右括号"].Text.Contains("")) { dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } } else if (selIndex == 0) //选择第一个元素 { dgvList.Items.RemoveAt(selIndex); //从显示的数据源中删除 } #endregion } else if (dgvList.SelectedItems[0].SubItems["逻辑"].Text == "") { ListViewItem selectListViewItem = dgvList.Items[selIndex - 1]; if (selectListViewItem == null)//不正常情况,无法删除 { return; } if (dgvList.SelectedItems[0].SubItems["右括号"].Text.Contains(")")) { #region if (selectListViewItem.SubItems["左括号"].Text.Contains("(")) { dgvList.Items[selIndex - 1].SubItems["左括号"].Text = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Text = ""; dgvList.Items[selIndex - 1].SubItems["左括号"].Tag = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } else { dgvList.Items[selIndex - 1].SubItems["右括号"].Text = ")"; dgvList.Items[selIndex - 1].SubItems["逻辑"].Text = ""; dgvList.Items[selIndex - 1].SubItems["右括号"].Tag = ")"; dgvList.Items[selIndex - 1].SubItems["逻辑"].Tag = "Or"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } #endregion } else { dgvList.Items[selIndex - 1].SubItems["逻辑"].Text = ""; dgvList.Items[selIndex - 1].SubItems["逻辑"].Tag = "And"; dgvList.Items.RemoveAt(selIndex);//从显示的数据源中删除 } } #endregion } }
/// <summary> /// 添加条件选项 /// </summary> /// <param name="simList"></param> /// <param name="Item"></param> /// <param name="isAnd"></param> protected void addListItem(GridOilListView simList, ListViewItem Item, bool isAnd) { if (simList.Items.Count == 0)// { #region "第一个And" editItemText(Item, "", "", "", "And"); simList.Items.Add(Item); #endregion } else if (simList.Items.Count == 1) { #region "已经存在一个item" if (isAnd)//And { #region "第二个And" editItemText(simList.Items[0], "", "", "And", "And"); editItemText(Item, "", "", "", "And"); simList.Items.Add(Item); #endregion } else //or { #region "第一个Or" editItemText(simList.Items[0], "(", "", "Or", "Or"); editItemText(Item, "", ")", "", "Or"); simList.Items.Add(Item); #endregion } #endregion } else if (simList.Items.Count > 1)//已经存在两个item { #region "已经存在两个item" if (simList.Items[simList.Items.Count - 2].SubItems["逻辑"].Text.Contains("Or"))//倒数第二个item含有Or { #region "倒数第二个item含有Or" if (isAnd)//And { #region "点击And按钮" editItemText(simList.Items[simList.Items.Count - 1], simList.Items[simList.Items.Count - 1].SubItems["左括号"].Text, simList.Items[simList.Items.Count - 1].SubItems["右括号"].Text, "And", "And"); editItemText(Item, "", "", "", "And"); #endregion } else //or { #region "点击Or按钮" editItemText(simList.Items[simList.Items.Count - 1], simList.Items[simList.Items.Count - 1].SubItems["左括号"].Text, "", "Or", "Or"); editItemText(Item, "", ")", "", "Or"); #endregion } simList.Items.Add(Item); #endregion } else if (simList.Items[simList.Items.Count - 2].SubItems["逻辑"].Text.Contains("And"))//倒数第二个item含有And { #region "倒数第二个item含有And" if (isAnd)//And { #region "点击And按钮" editItemText(simList.Items[simList.Items.Count - 1], simList.Items[simList.Items.Count - 1].SubItems["左括号"].Text, simList.Items[simList.Items.Count - 1].SubItems["右括号"].Text, "And", "And"); editItemText(Item, "", "", "", "And"); #endregion } else //or { #region "点击Or按钮" editItemText(simList.Items[simList.Items.Count - 1], "(", simList.Items[simList.Items.Count - 1].SubItems["右括号"].Text, "Or", "Or"); editItemText(Item, "", ")", "", "Or"); #endregion } simList.Items.Add(Item); #endregion } #endregion } }
/// <summary> /// 本方法用来处理相似查询选项的And和Or两个选择的关系 /// </summary> /// <param name="isAnd">判断用户选择的是是否是And关系</param> private void SimilarQuery(bool isAnd, GridOilListView simList, ComboBox cmbFrac, ComboBox cmbItem, TextBox txtFou, TextBox txtWei) { #region "检查添加的查询条件是否符合" if ("" == txtFou.Text) { MessageBox.Show("基础值不能为空!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { float tempFou = 0; if (float.TryParse(txtFou.Text, out tempFou)) { } else { MessageBox.Show("基础值必须为数字!", "提示信息"); txtFou.Focus(); return; } } if ("" == txtWei.Text) { MessageBox.Show("权重值不能为空!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } else { float tempWei = 0; if (float.TryParse(txtWei.Text, out tempWei)) { } else { MessageBox.Show("权重值必须为数字!", "提示信息"); txtWei.Focus(); return; } } //判断是否已经存在此属性 foreach (ListViewItem item in simList.Items) { if (item.SubItems["表名称"].Text == cmbFrac.Text && item.SubItems["物性"].Text == cmbItem.Text) { MessageBox.Show("查询条件已经存在,请重新选择!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } } //添加原油查询属性 if (simList.Items.Count >= 10) { MessageBox.Show("最多添加10条物性!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } #endregion string andOr = isAnd ? " And " : " Or "; #region "新建文本框显示实体,Key值用来向ListBox显示" ListViewItem Item = new ListViewItem(); for (int colIndex = 0; colIndex < simList.Columns.Count; colIndex++) { ListViewItem.ListViewSubItem temp = new ListViewItem.ListViewSubItem(); Item.SubItems.Add(temp); #region switch (colIndex) { case 0: Item.SubItems[0].Name = "左括号"; break; case 1: Item.SubItems[1].Name = "表名称"; break; case 2: Item.SubItems[2].Name = "表名称:物性"; break; case 3: Item.SubItems[3].Name = "物性"; break; case 4: Item.SubItems[4].Name = "物性:基础值"; break; case 5: Item.SubItems[5].Name = "基础值"; break; case 6: Item.SubItems[6].Name = "基础值:权重"; break; case 7: Item.SubItems[7].Name = "右括号"; break; case 8: Item.SubItems[8].Name = "逻辑"; break; } #endregion } #region "项目赋值" Item.SubItems["左括号"].Text = "("; Item.SubItems["表名称"].Text = cmbFrac.Text; Item.SubItems["表名称:物性"].Text = ":"; Item.SubItems["物性"].Text = ((OilTableRowEntity)cmbItem.SelectedItem).itemName; Item.SubItems["物性:基础值"].Text = ":"; Item.SubItems["基础值"].Text = txtFou.Text.Trim(); Item.SubItems["基础值:权重"].Text = ":"; Item.SubItems["权重"].Text = txtWei.Text.Trim(); Item.SubItems["右括号"].Text = ")"; Item.SubItems["逻辑"].Text = andOr; Item.SubItems["左括号"].Tag = "("; Item.SubItems["表名称"].Tag = cmbFrac.Text; Item.SubItems["表名称:物性"].Tag = ":"; Item.SubItems["物性"].Tag = ((OilTableRowEntity)cmbItem.SelectedItem).itemCode; Item.SubItems["物性:基础值"].Tag = ":"; Item.SubItems["基础值"].Tag = txtFou.Text.Trim(); Item.SubItems["基础值:权重"].Tag = ":"; Item.SubItems["权重"].Tag = txtWei.Text.Trim(); Item.SubItems["右括号"].Tag = ")"; Item.SubItems["逻辑"].Tag = andOr; #endregion #endregion addListItem(simList, Item, isAnd); }