C#如何在选择下拉框选项的同时显示对应信息在窗体上

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Delicious_Life/article/details/84931981

我也明白这个标题很绕嘴,但是我就是说不明白

解释标题:

 

功能实现 

我们先来分析一下,既然能选择查询就说明卡号和姓名是绑定的,我这里的卡号和姓名是在一个表里的两个字段。(多表可以用视图联起来查)那既然是在一个表里,那我们应用的无非就是单表查询,问题在于如何显示。请参考笔者代码,希望能帮你获取答案。

实体层

namespace Entity
{
    /// <summary>
    /// 用户实体类
    /// </summary>
    public class UserEntity
    {
        //用户ID
        private int userID;
        public int UserID
        {
            get { return userID; }
            set { userID = value; }
        }

        //密码
        private string password;
        public string Password
        {
            get { return password; }
            set { password = value; }
        }

        //用户名
        private string userName;
        public string UserName
        {
            get { return userName; }
            set { userName = value; }
        }

        //用户级别
        private string level;
        public string Level
        {
            get { return level; }
            set { level = value; }
        }
    }
}

 接口层

   public  interface ICheck
    {
        //从User表里查询用户ID
        List<Entity.UserEntity> SelectAllID(Entity.UserEntity user);
    }

数据传输层

   public  class CheckDAL :IDAL.ICheck
    {
        SQLHelper sqlhelper = new SQLHelper();

        /// <summary>
        /// 根据level查所有UserID
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public List<Entity.UserEntity> SelectAllID(Entity.UserEntity user)
        {
            SqlParameter[] sqlparams = { new SqlParameter("@level", "操作员") };
            string sql = @"select * from T_User where level=@level";
            DataTable table = sqlhelper.ExecuteQuery(sql, sqlparams, CommandType.Text);

            //将Datatable类型转换为list泛型
            ConvertHelper ct = new ConvertHelper();
            List<Entity.UserEntity> List = new List<Entity.UserEntity>();
            List = ct.ConvertTomodel<Entity.UserEntity>(table);
            return List;
        }

工厂层

        string StrDB = System.Configuration.ConfigurationManager.AppSettings["DB"];   //接收来自配置文件的数据

        /// <summary>
        /// 结账
        /// </summary>
        /// <returns></returns>
        public IDAL.ICheck Check()
        {
            string ClassName = StrDB + "." + "CheckDAL";  //DAL层的类名
            return (IDAL.ICheck)Assembly.Load(StrDB).CreateInstance(ClassName);   //反射+工厂的应用
        }

逻辑层

    public class CheckBLL  //结账
    {

        /// <summary>
        /// 根据level查所有UserID
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public List<Entity.UserEntity> SelectAllID(Entity.UserEntity user)
        {
            Factory.AdministratorFactory fact = new Factory.AdministratorFactory();
            IDAL.ICheck idal = fact.Check();
            return idal.SelectAllID(user);
        }

外观层

    public class CheckFacade //结账
    {

        /// <summary>
        /// 根据level查所有UserID
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public List<Entity.UserEntity> SelectAllID(Entity.UserEntity user)
        {
            return new BLL.CheckBLL().SelectAllID(user);
        }

显示层

        //将操作员姓名加入到下拉菜单
        private void FrmCheck_Load(object sender, EventArgs e)
        {
            Facade.CheckFacade facade = new Facade.CheckFacade();
            Entity.UserEntity user = new Entity.UserEntity();
            List<Entity.UserEntity> list = facade.SelectAllID(user);
            for (int i = 0; i < list.Count; i++)
            {
                cmbUserID.Items.Add(list[i].UserID);
            }

        }
        /// <summary>
        /// 获得用户ID后,给姓名赋值
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmbUserID_SelectedIndexChanged(object sender, EventArgs e)
        {
            Facade.CheckFacade facade = new Facade.CheckFacade();
            Entity.UserEntity user = new Entity.UserEntity();
            List<Entity.UserEntity> list = facade.SelectAllID(user);
            for (int i = 0; i < list.Count; i++)
            {
                if (Convert.ToInt32(cmbUserID.Text) == list[i].UserID)
                {
                    txtUserName.Text = Convert.ToString(list[i].UserName);
                }
            }

            this.cancelcard();//退卡信息写入表格
            this.recharge();//充值信息写入表格
            this.register();//注册信息写入表格
            this.show();//汇总显示
        }

本篇博客针对性较强,主要针对七层开发框架。如果读者乍看不太懂,不妨照着敲敲,未涉及到较复杂的问题,但愿你的问题可以迎刃而解~

猜你喜欢

转载自blog.csdn.net/Delicious_Life/article/details/84931981