Winform开发中怎么样用数据库字段绑定到ComboBox控件。Winform开发被什么拿数据库字段绑定到ComboBox控件。

近些年开班协调下手写一个财务分析软件,由于投机为是正学.Net不久,所以自己写的的当儿遇到了成千上万题目,希望经过博客把部分印象深刻的问题记录下来。

日前开好下手写一个财务分析软件,由于投机吗是刚刚学.Net不久,所以自己写的之时节遇到了多问题,希望由此博客把一部分记忆深刻的题材记录下来。

Winform开发被什么拿数据库字段绑定到ComboBox控件

1.问题引入

当出被之所以到了ComboBox控件,也不怕是促成下拉选择功能的控件。但是选择的
数据并无是定位的,而是要基于数据库被的某个平等排列进行动态的调。

 

2.化解思路

此间自己大致考虑了点儿种情形,一栽是产拉列表的抉择项是种类受到的实业类之一一样性,或者项目外如为此到该属性对应之数据库主键。

这种情景要是把实体对象通过SqlDataReader方法读取并打包到聚集中,然后再绑定数据。

倘自我此的情状是光待出示相应之性能就吓,使用的凡SqlDataAdapter方法读取数据
,然后以控件所当窗体初始化的时段把数量绑定。

 

3.参阅代码

率先种情形:

SQLHelper类中的代码:

 1 public static SqlDataReader GetReader(string sql)
 2     {
 3         SqlConnection conn = new SqlConnection(connString);
 4         SqlCommand cmd = new SqlCommand(sql, conn);
 5         try
 6         {
 7             conn.Open();
 8             return cmd.ExecuteReader(CommandBehavior.CloseConnection);
 9         }
10         catch (Exception ex)
11         {
12             conn.Close();
13             //将错误信息写入日志...
14 
15             throw ex;
16         }
17     }

 

包装到聚集中:

 1 public List<StudentClass> GetAllClasses()
 2     {
 3         string sql = "select ClassName,ClassId from StudentClass";
 4         SqlDataReader objReader = SQLHelper.GetReader(sql);
 5         List<StudentClass> list = new List<StudentClass>();
 6         while (objReader.Read())
 7         {
 8             list.Add(new StudentClass()
 9             {
10                 ClassId = Convert.ToInt32(objReader["ClassId"]),
11                 ClassName = objReader["ClassName"].ToString()
12             });
13         }
14         objReader.Close();
15         return list;
16     }

 

下一场于窗体初始化方法中调用并绑定数据:

 1  private StudentClassService objClassService = new StudentClassService();
 2 
 3     public FrmAddStudent()
 4     {
 5         InitializeComponent();
 6         //初始化班级下拉框
 7         this.cboClassName.DataSource = objClassService.GetAllClasses();
 8         this.cboClassName.DisplayMember = "ClassName";
 9         this.cboClassName.ValueMember = "ClassId";
10 
11     }

 

老二栽情况:

SQLHelper类中的代码:

1  public static DataSet GetDataSet(string sql)
2     {
3         SqlConnection conn = new SqlConnection(connString);
4         //SqlCommand cmd = new SqlCommand(sql, conn);
5         SqlDataAdapter da = new SqlDataAdapter(sql, conn);
6         DataSet ds = new DataSet();
7         da.Fill(ds);
8         return ds;
9     }

 

接下来于窗体初始化方法中调用并绑定数据:

 1 public partial class FrmVoucherQuery : Form
 2 {
 3     public FrmVoucherQuery()
 4     {
 5         InitializeComponent();
 6         string sql = string.Format("Select FName From t_VoucherGroup Order by FGroupID");
 7         //控件名.DataSource=数据集.数据表
 8         cbVoucherName.DataSource = SQLHelper.GetDataSet(sql).Tables[0];
 9         cbVoucherName.DisplayMember = "FName";
10         cbVoucherName.ValueMember = "FName";
11     }
12 }

 

Winform开发中争用数据库字段绑定到ComboBox控件

1.题目引入

当开发被之所以到了ComboBox控件,也尽管是落实下拉选择功能的控件。但是选择的
数据并无是原则性的,而是要根据数据库被的某部一样列进行动态的调整。

 

2.解决思路

此地自己大概考虑了一定量种植情形,一种植是生拉列表的选取项是路遭到之实业类之一同性,或者项目外如因此到拖欠属性对应之数据库主键。

这种气象要是拿实体对象通过SqlDataReader方法读取并封装到集结中,然后重新绑定数据。

假若自己这边的情事是光待展示相应的特性就好,使用的是SqlDataAdapter方法读取数据
,然后在控件所于窗体初始化的当儿把多少绑定。

 

3.参考代码

先是种植情形:

SQLHelper类中的代码:

 1 public static SqlDataReader GetReader(string sql)
 2     {
 3         SqlConnection conn = new SqlConnection(connString);
 4         SqlCommand cmd = new SqlCommand(sql, conn);
 5         try
 6         {
 7             conn.Open();
 8             return cmd.ExecuteReader(CommandBehavior.CloseConnection);
 9         }
10         catch (Exception ex)
11         {
12             conn.Close();
13             //将错误信息写入日志...
14 
15             throw ex;
16         }
17     }

 

包裹到集结中:

 1 public List<StudentClass> GetAllClasses()
 2     {
 3         string sql = "select ClassName,ClassId from StudentClass";
 4         SqlDataReader objReader = SQLHelper.GetReader(sql);
 5         List<StudentClass> list = new List<StudentClass>();
 6         while (objReader.Read())
 7         {
 8             list.Add(new StudentClass()
 9             {
10                 ClassId = Convert.ToInt32(objReader["ClassId"]),
11                 ClassName = objReader["ClassName"].ToString()
12             });
13         }
14         objReader.Close();
15         return list;
16     }

 

然后以窗体初始化方法中调用并绑定数据:

 1  private StudentClassService objClassService = new StudentClassService();
 2 
 3     public FrmAddStudent()
 4     {
 5         InitializeComponent();
 6         //初始化班级下拉框
 7         this.cboClassName.DataSource = objClassService.GetAllClasses();
 8         this.cboClassName.DisplayMember = "ClassName";
 9         this.cboClassName.ValueMember = "ClassId";
10 
11     }

 

其次种情况:

SQLHelper类中之代码:

1  public static DataSet GetDataSet(string sql)
2     {
3         SqlConnection conn = new SqlConnection(connString);
4         //SqlCommand cmd = new SqlCommand(sql, conn);
5         SqlDataAdapter da = new SqlDataAdapter(sql, conn);
6         DataSet ds = new DataSet();
7         da.Fill(ds);
8         return ds;
9     }

 

下一场于窗体初始化方法中调用并绑定数据:

 1 public partial class FrmVoucherQuery : Form
 2 {
 3     public FrmVoucherQuery()
 4     {
 5         InitializeComponent();
 6         string sql = string.Format("Select FName From t_VoucherGroup Order by FGroupID");
 7         //控件名.DataSource=数据集.数据表
 8         cbVoucherName.DataSource = SQLHelper.GetDataSet(sql).Tables[0];
 9         cbVoucherName.DisplayMember = "FName";
10         cbVoucherName.ValueMember = "FName";
11     }
12 }

 

相关文章

admin

网站地图xml地图