【机房重构】-组和查询

小编 2026-07-01 阅读:1700 评论:0
父窗体 public partial class GroupInquiry_UI : Form { public GroupInquiry_UI()...

父窗体

 public partial class GroupInquiry_UI : Form
    {
        public GroupInquiry_UI()
        {
            InitializeComponent();
        }

        #region 调用封装的clear类,控件初始化
        private void btnClear_Click(object sender, EventArgs e)
        {
            //Clear这个类是我之前自己封装的,现在直接用!Clear(this, panel1)是Clear中的一个重载!
            Clear clear = new Clear(this, panel1);
            DataTable Table = null;
            dataGridView1.DataSource = Table;

            //控件的初始化
            CmbName2.Enabled = false;
            CmbName3.Enabled = false;
            CmbMark2.Enabled = false;
            CmbMark3.Enabled = false;
            txtInfo2.Enabled = false;
            txtInfo3.Enabled = false;
            CmbRelation1.Enabled = false;
            CmbRelation2.Enabled = false;
        }
        #endregion

        #region 查询
        private void btnSearch_Click(object sender, EventArgs e)
        {          
            foreach (Control cl in panel1.Controls)
            {
                if ((cl is ComboBox || cl is TextBox) && cl.Enabled == true)
                {
                    if (cl.Text.Trim() == \"\")
                    {
                        MessageBox.Show(\"请将您的信息填写完整!\", \"提示\", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;//退出过程
                    }
                }
            }
         

            Entity.GroupInquiry_Info groupinquiry = new Entity.GroupInquiry_Info();//实例化实体
            Facade.GroupInquiry_Facade groupFine = new Facade.GroupInquiry_Facade();
            //给实体赋值
            groupinquiry.CmbName1 = ToName(CmbName1.Text.Trim());
            groupinquiry.CmbName2 = ToName(CmbName2.Text.Trim());
            groupinquiry.CmbName3 = ToName(CmbName3.Text.Trim());

            groupinquiry.CmbOper1 = CmbMark1.Text.Trim();
            groupinquiry.CmbOper2 = CmbMark2.Text.Trim();
            groupinquiry.CmbOper3 = CmbMark3.Text.Trim();

            groupinquiry.CmbGroup1 = ToName(CmbRelation1.Text.Trim());
            groupinquiry.CmbGroup2 = ToName(CmbRelation2.Text.Trim());

            groupinquiry.txtInfo1 = txtInfo1.Text.Trim();
            groupinquiry.txtInfo2 = txtInfo2.Text.Trim();
            groupinquiry.txtInfo3 = txtInfo3.Text.Trim();

            groupinquiry.GetDataTable = Getdbtable();//从数据库中获取表格(选择调用那个数据库)

            DataTable result = new DataTable();
            result = groupFine.GroupCheck(groupinquiry);

            if (result.Rows.Count == 0)//没有查询到
            {
                MessageBox.Show(\"没有复合条件的记录,请重新选择条件\");
            }
            else
            {
                //MessageBox.Show(\"查找成功!\", \"提示\", MessageBoxButtons.OK, MessageBoxIcon.Information);
                ToDgv(groupinquiry);//查询到以后调用子窗体中重写的方法显示数据
            }
        }
        #endregion

        #region 关闭
        private void btnQuit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        #endregion

        #region  自己构造的虚方法
        public virtual string ToName(string combo)//转换中文字符为英文字符,在子窗体进行重写!
        {
            return \"\";
        }
        protected virtual string Getdbtable() //定义一个数据库中不同表的名字的虚方法,在子窗体进行重写
        {
            return \"\";
        }
        protected virtual void ToDgv(Entity.GroupInquiry_Info enGroupFind)//显示数据
        {

        }
        #endregion

        #region CmbRelation1选择与或的时候,出来下一条信息
        private void CmbRelation1_SelectedIndexChanged(object sender, EventArgs e)
        {
            string relationship = CmbRelation1.Text.Trim();
            switch (relationship)
            {
                case \"与\":
                    CmbName2.Enabled = true;
                    CmbMark2.Enabled = true;
                    txtInfo2.Enabled = true;
                    break;
                case \"或\":
                    CmbName2.Enabled = true;
                    CmbMark2.Enabled = true;
                    txtInfo2.Enabled = true;
                    break;
            }
        }
        #endregion

        #region 当第一行所有的内容添加完毕,此时关系下拉框被激活
        private void txtContent1_TextChanged(object sender, EventArgs e)
        {
            if (CmbName1.Text != \"\" && CmbMark1.Text != \"\" && txtInfo1.Text != \"\")
            {
                CmbRelation1.Enabled = true;
            }
        }
        #endregion

        #region 当第二行所有的内容添加完毕,此时关系下拉框被激活
        private void txtContent2_TextChanged(object sender, EventArgs e)
        {
            if (CmbName2.Text != \"\" && CmbMark2.Text != \"\" && txtInfo2.Text != \"\")
            {
                CmbRelation2.Enabled = true;
            }
        }
        #endregion

        #region CmbRelation2选择与或的时候,出来下一条信息
        private void CmbRelation2_SelectedIndexChanged(object sender, EventArgs e)
        {
            string relationship = CmbRelation1.Text.Trim();
            switch (relationship)
            {
                case \"与\":
                    CmbName3.Enabled = true;
                    CmbMark3.Enabled = true;
                    txtInfo3.Enabled = true;
                    break;
                case \"或\":
                    CmbName3.Enabled = true;
                    CmbMark3.Enabled = true;
                    txtInfo3.Enabled = true;
                    break;
            }
        }
        #endregion          

        private void GroupInquiry_UI_Load(object sender, EventArgs e)
        {
            #region 操作符
            CmbMark1.Items.Add(\">\");
            CmbMark1.Items.Add(\"<\");
            CmbMark1.Items.Add(\"=\");
            CmbMark1.Items.Add(\"<>\");
            CmbMark2.Items.Add(\">\");
            CmbMark2.Items.Add(\"<\");
            CmbMark2.Items.Add(\"=\");
            CmbMark2.Items.Add(\"<>\");
            CmbMark3.Items.Add(\">\");
            CmbMark3.Items.Add(\"<\");
            CmbMark3.Items.Add(\"=\");
            CmbMark3.Items.Add(\"<>\");
            #endregion


            #region 设置控件不可用状态
            CmbMark2.Enabled = false;
            CmbMark3.Enabled = false;

            CmbName2.Enabled = false;
            CmbName3.Enabled = false;

            CmbRelation1.Enabled = false;
            CmbRelation2.Enabled = false;
            txtInfo2.Enabled = false;
            txtInfo3.Enabled = false;
            #endregion

            #region 设置复选框只可以选择不可以输入
            this.CmbMark1.DropDownStyle = ComboBoxStyle.DropDownList;
            this.CmbMark2.DropDownStyle = ComboBoxStyle.DropDownList;
            this.CmbMark3.DropDownStyle = ComboBoxStyle.DropDownList;

            this.CmbName1.DropDownStyle = ComboBoxStyle.DropDownList;
            this.CmbName2.DropDownStyle = ComboBoxStyle.DropDownList;
            this.CmbName3.DropDownStyle = ComboBoxStyle.DropDownList;

            this.CmbRelation1.DropDownStyle = ComboBoxStyle.DropDownList;
            this.CmbRelation2.DropDownStyle = ComboBoxStyle.DropDownList;
            #endregion
        }

        #region 封装清空类
        public class Clear
        {
            public Clear(GroupInquiry_UI form, Panel panal) //如果有panel控件,此处也可以添加一个panel清除
            {
                foreach (Control ctl in form.panel1.Controls)
                {
                    //清空combobox
                    if (ctl is ComboBox)
                    {
                        ComboBox cmb = ctl as ComboBox;
                        cmb.SelectedIndex = -1;
                    }
                    //清空textbox
                    else if (ctl is TextBox)
                    {
                        TextBox txt = ctl as TextBox;
                        txt.Text = string.Empty;
                    }
                }
            }
        }
        #endregion

        #region 清空,控件初始化
        private void btnClear_Click_1(object sender, EventArgs e)
        {
            Clear clear = new Clear(this, panel1);
            DataTable Table = null;
            dataGridView1.DataSource = Table;

            //控件的初始化
            CmbMark2.Enabled = false;
            CmbMark3.Enabled = false;

            CmbName2.Enabled = false;
            CmbName3.Enabled = false;

            CmbRelation2.Enabled = false;
            txtInfo2.Enabled = false;
            txtInfo3.Enabled = false;

        }
        #endregion

        #region 构造一个没有任何返回值的虚方法,来根据CmbName的内容,出现相应的下拉内容!
        public virtual void addcontent(ComboBox name, ComboBox mark)
        {
           
        }
        #endregion

继承窗体

public partial class AdminGroupInquiry_UI : UI.Admin.GroupInquiry_UI
    {
        public AdminGroupInquiry_UI()
        {
            InitializeComponent();
        }
    
        #region 重写了英文转换成数据库中所识别英文的方法
        public override string ToName(string combo)//重写虚方法,将自己要的字段转化成数据库字段
        {
            switch (combo)
            {
                case \"卡号\":
                    return \"stuID\";
                case \"姓名\":
                    return \"stuName\";
                case \"性别\":
                    return \"sex\";
                case \"年龄\":
                    return \"age\";
                case \"学院\":
                    return \"department\";
                case \"专业\":
                    return \"major\";
                case \"班级\":
                    return \"grade\";
                case \"与\":
                    return \"and\";
                case \"或\":
                    return \"or\";

                default:
                    return \"\";
            }
        }
        #endregion

        #region 重写了获取数据库中表的名字的方法
        protected override string Getdbtable() //Select语句需求的数据库
        {
            return \"StuCard_Info\";
        }
        #endregion
      
        #region 重写显示查询到的数据库中的数据
        protected override void ToDgv(Entity.GroupInquiry_Info enGroupFind)//重写方法,显示结果
        {
            dataGridView1.DataSource = \"\";
            DataTable dt = new DataTable();
            Facade.GroupInquiry_Facade gf = new Facade.GroupInquiry_Facade();//去拿到数据库的数据
            dt = gf.GroupCheck(enGroupFind);
            if (dt.Rows.Count == 0)
            {
                MessageBox.Show(\"没有记录,请重新查询\");
            }
            else
            {
                //子类中的需要的东西,父窗体只负责显示
                dataGridView1.DataSource = dt;
                dataGridView1.Refresh();
            }
        }
        #endregion

        #region 重写根据CmbName的值,显示不同的cbomark的值
        public override void addcontent(ComboBox name, ComboBox cbomark)
        {
            switch (name.Text)
            {
                case \"姓名\":
                case \"性别\":
                case \"学院\":
                case \"专业\":
                    cbomark.Text = \"\";
                    cbomark.Items.Clear();
                    cbomark.Items.Add(\"=\");
                    cbomark.Items.Add(\"<>\");
                    break;
                case \"卡号\":
                case \"班级\":
                case \"年龄\":
                    cbomark.Text = \"\";
                    cbomark.Items.Clear();
                    cbomark.Items.Add(\"=\");
                    cbomark.Items.Add(\"<>\");
                    cbomark.Items.Add(\"<\");
                    cbomark.Items.Add(\">\");
                    break;
            }
        }
        #endregion
        private void AdminGroupInquiry_UI_Load(object sender, EventArgs e)
        {           
            CmbName1.Items.Add(\"卡号\");
            CmbName1.Items.Add(\"姓名\");
            CmbName1.Items.Add(\"性别\");
            CmbName1.Items.Add(\"专业\");
            CmbName1.Items.Add(\"年龄\");
            CmbName1.Items.Add(\"学院\");
            CmbName1.Items.Add(\"班级\");

            CmbName2.Items.Add(\"卡号\");
            CmbName2.Items.Add(\"姓名\");
            CmbName2.Items.Add(\"性别\");
            CmbName2.Items.Add(\"专业\");
            CmbName2.Items.Add(\"年龄\");
            CmbName2.Items.Add(\"学院\");
            CmbName2.Items.Add(\"班级\");

            CmbName3.Items.Add(\"卡号\");
            CmbName3.Items.Add(\"姓名\");
            CmbName3.Items.Add(\"性别\");
            CmbName3.Items.Add(\"专业\");
            CmbName3.Items.Add(\"年龄\");
            CmbName3.Items.Add(\"学院\");
            CmbName3.Items.Add(\"班级\");
        }
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表