【问题描述】
需要在下拉框中获取数据库的数据
【代码实现】
private void cobDepart_SelectedIndexChanged(object sender, EventArgs e)
{
string value = this.cobDepart.SelectedValue.ToString();
Console.WriteLine("当前选中的是"+value);
}
private void frmAddStaff_Load(object sender, EventArgs e)
{
cobSex.Text = "--请选择--";
cobSex.Items.Add("女");
cobSex.Items.Add("男");
try
{
//调用B层
IBLL.IDepartBLL departIBLL = AbstractFactory.Factory.CreateConcreteClass(Encapsulation.BLL, Encapsulation.DepartBLL);
//查询是否存在该卡号
List<dynamic> list = departIBLL.SelectAll();
cobDepart.DataSource = list;//使用list来接收查询到的数据源
cobDepart.DisplayMember = "departmentId";
cobDepart.ValueMember = "departmentId";
cobDepart.Text = "--请选择--";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message); //抓取B层中的判断异常进行提示
this.Show();
}
}
BLL层
/// <summary>
/// 查询所有的ID
/// </summary>
/// <returns></returns>
public List<dynamic> SelectAll()
{
//调用工厂方法创建接口
IDAL.IDepartDAL departIDAL = AbstractFactory.Factory.CreateConcreteClass(Encapsulation.DAL, Encapsulation.DepartDAL);
//接受D层的返回值
List<dynamic> list = departIDAL.SelectAll();
if (list.Count > 0)//返回数据表类型
{
return list;
}
else
{
throw new Exception("查询不到内容!");
}
}
DAL层
/// <summary>
/// 查询所有的ID
/// </summary>
/// <returns></returns>
public List<dynamic> SelectAll()
{
//实例化操作类,进行数据查询,并获取返回值
SqlHelper sqlHelper = new SqlHelper();
//执行数据库的查询
string sql = "SELECT * FROM T_Department ";//构造语句,匹配数据库表
DataTable dt = SqlHelper.GetDataTable(sql);
List<dynamic> list = new List<dynamic>();
foreach (DataRow row in dt.Rows) //遍历读取dt里面的数据,并添加到list集合中
{
list.Add(new DepartmentInfo()
{
DepartmentId = Convert.ToString(row["departmentId"])
});
}
//返回表到到BLL层
return list;
}
【遗留问题】
如果要设置下拉框不可以输入,那么可以设置属性DropDownStyle为DropDownList,这样就可以限制下拉框的输入,只显示从数据库中查询到的数据。
但是这样的话,窗体一显示,下拉框就会显示查询到的数据库中的第一条数据,而不是我写的下拉框为空或者是显示“–请选择–”字样。
如果要显示“–请选择–”字样,就只能设置下拉框为可输入的状态。
这个问题暂时还没有解决,应该是我还没有找到正确的方法。 如果你知道答案,欢迎评论留言哦~