Winform开发中如何将数据库字段绑定到ComboBox控件
最近开始自己动手写一个财务分析软件,由于自己也是刚学.Net不久,所以自己写的的时候遇到了很多问题,希望通过博客把一些印象深刻的问题记录下来。
Winform开发中如何将数据库字段绑定到ComboBox控件
1.问题引入
在开发中用到了ComboBox控件,也就是实现下拉选择功能的控件。但是选项的 数据并不是固定的,而是要根据数据库中的某一列进行动态的调整。
2.解决思路
这里我大概考虑了两种情况,一种是下拉列表的选择项是项目中的实体类某一属性,或者项目其他要用到该属性对应的数据库主键。
这种情况主要是把实体对象通过SqlDataReader方法读取并封装到集合中,然后再绑定数据。
而我这里的情况是只需要显示对应的属性就好,使用的是SqlDataAdapter方法读取数据 ,然后在控件所在窗体初始化的时候把数据绑定。
3.参考代码
第一种情况:
SQLHelper类中的代码:
public static SqlDataReader GetReader(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
conn.Close();
//将错误信息写入日志...
throw ex;
}
}封装到集合中:
public List<StudentClass> GetAllClasses()
{
string sql = "select ClassName,ClassId from StudentClass";
SqlDataReader objReader = SQLHelper.GetReader(sql);
List<StudentClass> list = new List<StudentClass>();
while (objReader.Read())
{
list.Add(new StudentClass()
{
ClassId = Convert.ToInt32(objReader["ClassId"]),
ClassName = objReader["ClassName"].ToString()
});
}
objReader.Close();
return list;
}然后在窗体初始化方法里面调用并绑定数据:
private StudentClassService objClassService = new StudentClassService();
public FrmAddStudent()
{
InitializeComponent();
//初始化班级下拉框
this.cboClassName.DataSource = objClassService.GetAllClasses();
this.cboClassName.DisplayMember = "ClassName";
this.cboClassName.ValueMember = "ClassId";
}第二种情况:
SQLHelper类中的代码:
public static DataSet GetDataSet(string sql)
{
SqlConnection conn = new SqlConnection(connString);
//SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter da = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}然后在窗体初始化方法里面调用并绑定数据:
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 } 相关推荐
89427412 2020-02-13
0tx 2014-01-19
xx0cw 2019-10-27
小小大人物 2017-03-01
88324358 2016-03-18
海欣海夜 2015-03-20
黎豆子 2014-01-19
84483368 2012-10-16
崔博伦一路有你 2012-10-15
EdwardSiCong 2012-03-31
huzai 2012-02-23
shanhuijava 2011-07-31
lsxxx0 2017-08-06
83483768 2019-05-04
melissahexiu 2017-03-08
醉殇姒若梦遗年 2016-12-19
87407607 2013-12-24
88487901 2013-11-30