最近开始自己动手写一个财务分析软件,由于自己也是刚学.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;
}

然后在窗体初始化方法里面调用并绑定数据:

 public partial class FrmVoucherQuery : Form
{
public FrmVoucherQuery()
{
InitializeComponent();
string sql = string.Format("Select FName From t_VoucherGroup Order by FGroupID");
//控件名.DataSource=数据集.数据表
cbVoucherName.DataSource = SQLHelper.GetDataSet(sql).Tables[];
cbVoucherName.DisplayMember = "FName";
cbVoucherName.ValueMember = "FName";
}
}

Winform开发中如何将数据库字段绑定到ComboBox控件的更多相关文章

  1. .NET混合开发解决方案7 WinForm程序中通过NuGet管理器引用集成WebView2控件

    系列目录     [已更新最新开发文章,点击查看详细] WebView2组件支持在WinForm.WPF.WinUI3.Win32应用程序中集成加载Web网页功能应用.本篇主要介绍如何在WinForm ...

  2. winform中comboBox控件加默认选项的问题

    winform程序设计中,label,TextBox,ComboBox等几个控件几乎是用得最多的,在设计中经常会遇到一些小问题,如:comboBox控件绑定了数据源之后,如何设置默认值? combob ...

  3. MFC中ComboBox控件用法

    MFC ComboBox 一.入门篇 ComboBox (组合框)控件很简单,可以节省空间.从用户角度来看,这个控件是由一个文本输入控件和一个下拉菜单组成的.用户可以从一个预先定义的列表里选择一个选项 ...

  4. 在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储

    在上篇随笔<在Winform开发中使用日程控件XtraScheduler>中介绍了DevExpress的XtraScheduler日程控件的各种使用知识点,对于我们来说,日程控件不陌生,如 ...

  5. 在Winform开发中使用日程控件XtraScheduler

    在一些应用场景中,我们可能需要记录某一天,某个时段的日程安排,那么这个时候就需要引入了DevExpress的日程控件XtraScheduler了,这个控件功能非常强大,提供了很好的界面展现方式,以及很 ...

  6. 在Winform开发中使用Grid++报表

    之前一直使用各种报表工具,如RDLC.DevExpress套件的XtraReport报表,在之前一些随笔也有介绍,最近接触锐浪的Grid++报表,做了一些测试例子和辅助类来处理报表内容,觉得还是很不错 ...

  7. 在Android 开发中使用 SQLite 数据库笔记

    SQLite 介绍   SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...

  8. 在Winform开发中,我们使用的几种下拉列表展示字典数据的方式

    在Winform开发中中,我们为了方便客户选择,往往使用系统的字典数据选择,毕竟选择总比输入来的快捷.统一,一般我们都会简单封装一下,以便方便对控件的字典值进行展示处理,本篇随笔介绍DevExpres ...

  9. WinForm开发中通用附件管理控件设计开发参考

    1.引言 在WinForm开发中,文件附件的管理几乎在任何一个应用上都会存在,是一个非常通用集中的公共模块.我们日常记录会伴随着有图片.文档等附件形式来展现,如果为每个业务对象都做一个附件管理,或者每 ...

随机推荐

  1. 最最简单的CentOs6在线源搭建

    非常实用的在线源搭建,只要4步骤 1.点击进入http://mirrors.aliyun.com/repo/epel-6.repo ,这是阿里云的源 2.复制所有的代码  ctrl+a,ctrl+c ...

  2. 通用的contain函数

    用来检测节点所属关系:document.documentElement.contains(document.body) function contains(refNode, otherNode) {i ...

  3. Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程

    Ubuntu 12.04嵌入式交叉编译环境arm-linux-gcc搭建过程Linux版本:Ubuntu 12.04 内核版本:Linux 3.5.0 交叉编译器版本:arm-linux-gcc-4. ...

  4. wx:for修改样式

    在获取文字识别数据之后,对数据进行wx:for循环加了边框如图效果: 需求:点击不同边框获取不同文字,再次点击取消选中:选中背景为#999: <view wx:for="{{img_d ...

  5. weiapi 获取项目根目录

    无法使用: Server.Map("~"); Server.Map("~/"); Server.Map("./"); Server.Map( ...

  6. 学习笔记-----php搭建用户管理系统

    后台:php,数据库:mysql,前端:html,css,js; 主要页面介绍: 1.php连接数据库后台,读取数据并将其以表格的形式显示,并且有添加,编辑,删除,分页等功能: 2.php用于添加用户 ...

  7. 几种移动app API调用认证方案浅析

    最近做的金融项目,app调用的接口需要做一个身份认证,所以找了下目前API services验证的几种方式.之前翻译的一篇文章--[译]移动API安全终极指南中,主要提出了API服务调用验证的问题,通 ...

  8. javaScript属性

    ------------------------------------行内样式------------------------------------ *基本标签html 网页的开始标记head 网 ...

  9. vim如何显示行号

    在 vim 里执行(在普通模式下直接按冒号,并输入下面的命令 :set number 回车后就可以显示行号了,但重启 vim 后又会恢复默认的设置. 要想每次进入 vim 都显示行号就需要配置 vim ...

  10. pandas基本介绍-【老鱼学pandas】

    前面我们学习了numpy,现在我们来学习一下pandas. Python Data Analysis Library 或 pandas 主要用于处理类似excel一样的数据格式,其中有表头.数据序列号 ...