winform开发中如何将数据库字段绑定到combobox控件

xtualong xtualong     2022-10-06     221

关键词:

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

 

如何将文本字段绑定到包含一行的一个核心数据实体的属性?

】如何将文本字段绑定到包含一行的一个核心数据实体的属性?【英文标题】:Howtobindtextfieldstoattributesofonecoredataentitycontainingonerow?【发布时间】:2011-09-0602:56:20【问题描述】:我有一个视图想要显示我的应用的汇总使用数据。... 查看详情

如何让用户组件成为 WinForms 中数据绑定的数据源?

】如何让用户组件成为WinForms中数据绑定的数据源?【英文标题】:HowtogetausercomponenttobeadatasourcefordatabindinginWinForms?【发布时间】:2012-02-1702:04:32【问题描述】:我创建了一个组件来从Web服务中获取数据。Web服务返回一个ADO.NET数... 查看详情

winform控件tag使用规范

背景Tag在WinForm控件中经常被用来存储临时数据,类型为object,但是当程序中多个地方使用到Tag时,容易造成Tag使用的混乱,Tag是如此重要的一个属性,应该要好好考虑下如何有效的使用Tag服务于程序开发。借鉴Web开发时,Js可以... 查看详情

WinForm 绑定单选按钮

】WinForm绑定单选按钮【英文标题】:WinFormbindingradiobutton【发布时间】:2012-02-1222:42:43【问题描述】:我使用VS2010,然后将成员datagridview拖放到设计视图中。之后,我将名称成员文本字段拖放到设计视图,然后尝试编辑和保存。... 查看详情

将枚举绑定到 WinForms 组合框,然后设置它

】将枚举绑定到WinForms组合框,然后设置它【英文标题】:BindinganenumtoaWinFormscombobox,andthensettingit【发布时间】:2010-10-2818:13:13【问题描述】:很多人已经回答了如何将枚举绑定到WinForms中的组合框的问题。是这样的:comboBox1.DataSo... 查看详情

如何在 WinForms 中将字典绑定到 ListBox

】如何在WinForms中将字典绑定到ListBox【英文标题】:HowtobindDictionarytoListBoxinWinForms【发布时间】:2010-12-0304:20:42【问题描述】:可以将Dictionary绑定到Listbox,在Listbox和成员属性之间保持同步吗?【问题讨论】:【参考方案1】:var... 查看详情

如何将绑定连接到(Winform)ComboBox 控件以从绑定源获取/设置控件中的选择?

】如何将绑定连接到(Winform)ComboBox控件以从绑定源获取/设置控件中的选择?【英文标题】:HowdoIconnectabindingtoa(Winform)ComboBoxcontroltoget/settheselectioninthecontrolfromthebindingsource?【发布时间】:2021-09-2006:13:34【问题描述】:我已经深... 查看详情

第一个 Python/Kivy/KivyMD 应用程序。无法将文本字段中的数据保存到变量 + 数据绑定到 MDList

...:2021-04-1508:48:06【问题描述】:我最近开始在python/kivy中开发一个学校上交应用程序。我处于我在kivy 查看详情

将对象列表数据绑定到 WinForms DataGridView,但不显示某些公共属性

】将对象列表数据绑定到WinFormsDataGridView,但不显示某些公共属性【英文标题】:DatabindListOfObjectsToAWinFormsDataGridView,ButNotShowCertainPublicProperties【发布时间】:2011-01-2701:16:36【问题描述】:我什至不确定我这样做是否正确。但基本... 查看详情

c#winform中选中datagridview控件中某行如何将该行某个字段(1,2,3,4,)的值绑定checkedlistbox控件的数

this.DatagridView1.SelectedRows[0].Cells[0].Value.ToString()//获取选中行的第一列的值其他列以此类推CheckedListBox1.Items.add(stringvalue);//绑定追问CheckedListBox1.Items.add(stringvalue);//绑定这个(stringvalue)用不起啊,能说明清楚点吗?小弟初学者!!!... 查看详情

如何使用绑定到数据表的 c#winforms 保存我的 datagridview

】如何使用绑定到数据表的c#winforms保存我的datagridview【英文标题】:Howtosavemydatagridviewwithc#winformsboundedtoadatatable【发布时间】:2021-04-1500:27:27【问题描述】:我已经使用设计器将我的MSSQL数据表绑定到datagridview(数据表至少有30... 查看详情

如何使用 C# 在 WinForm 中手动绑定到蓝牙低功耗设备?

】如何使用C#在WinForm中手动绑定到蓝牙低功耗设备?【英文标题】:HowtoBindmanuallytoaBlueToothLowEnergyDeviceinaWinFormusingC#?【发布时间】:2017-01-0123:54:47【问题描述】:这个问题的回答者大多是:WindowsUWPconnecttoBLEdeviceafterdiscovery目前,... 查看详情

如何将一个操作“绑定到数据库事务上”

...spring-cache简介基本机制事务上下文中的问题将操作绑定到数据库事务上spring-cache的相关实现TransactionSynchronizationManager和TransactionSynchronizationAdapter事务相关操作注册与回调流程其它应用摘要在开发中,我们常常会遇到(或者需要)... 查看详情

c#winform项目中,如何使用字典代码?

如,数据库中:性别字段,1为男,2为女,其它如:学历,表现为中文,数据库中存取的是对应的代码。如何实现数据的绑定,存取,界面表现。1、基于ACCESS,c#vs2008,不要求SQL的。2、不使用JOIN多表连接字典表的方式实现。3、... 查看详情

Svelte:如何将格式化的输入字段绑定到属性

】Svelte:如何将格式化的输入字段绑定到属性【英文标题】:Svelte:Howtobindaformattedinputfieldtoaproperty【发布时间】:2020-01-3008:29:15【问题描述】:首先:Svelte对我来说还是个新手。我希望这个问题不是太琐碎。在一个简单的组件中... 查看详情

Winforms:如何使用 C# 将图片上传到 SQL Server 数据库

】Winforms:如何使用C#将图片上传到SQLServer数据库【英文标题】:Winforms:HowtouploadapictureintoSQLServerdatabaseusingC#【发布时间】:2011-01-2320:05:59【问题描述】:我想将图像上传到我的SQLServer数据库。我有两个按钮,一个图片框。使用浏... 查看详情

Winforms 中的数据绑定

...我在VS2010中有一个数据输入WinformsApp。连同连接到SQLCompact数据库的实体数据模型(.edmx)。在这个数据库中,我有一个要插入的表Ticket。在我的表单上,我设置了所有控件的DataBindings属性并指向数据库中的正确字段。我正在尝试从... 查看详情

Winforms DataGridView 数据绑定到复杂类型/嵌套属性

】WinformsDataGridView数据绑定到复杂类型/嵌套属性【英文标题】:WinformsDataGridViewdatabindtocomplextype/nestedproperty【发布时间】:2010-10-1514:09:27【问题描述】:我正在尝试将DataGridView数据绑定到包含具有以下结构的类的列表:MyClass.SubCl... 查看详情