Пример #1
0
        /// <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
            }
        }
Пример #2
0
        /// <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
            }
        }
Пример #3
0
        /// <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);
        }