Winform 绑定下拉列表

Winform 中 GrideView 中下拉列的绑定问题,其实之前做过的,好久没再用过,今天突然用到竟然又费了九牛二虎之力,好纠结地说。。虽然最后问题出在一个数据类型的细节的,所以还是 Mark 一下,加强记忆 . 代码部分很少,我把使用设计视图中产生的EF 代码和常用的 DataTable 和 IList 三种数据源绑定放在一起,比较一下其实跟普通的绑定一样 :

            // TODO: 这行代码将数据加载到表“dS_Student.SEXENUM”中。您可以根据需要移动或删除它。
            this.sEXENUMTableAdapter.Fill(this.dS_Student.SEXENUM);
            // TODO: 这行代码将数据加载到表“dS_Student.STUDENTINFO”中。您可以根据需要移动或删除它。
            this.sTUDENTINFOTableAdapter.Fill(this.dS_Student.STUDENTINFO);
            // 使用数据源工具时产生的自动代码
            this.sEXDataGridViewTextBoxColumn.DataSource = this.sEXENUMBindingSource;
            this.sEXDataGridViewTextBoxColumn.DisplayMember = "LABELTEXT";
            this.sEXDataGridViewTextBoxColumn.ValueMember = "VALUE";
            this.sEXDataGridViewTextBoxColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True;
            this.sEXDataGridViewTextBoxColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
            // 记得设置这个哟
            dataGridView1.AutoGenerateColumns = false;
            // List 数据源
            List<ComboItem> list = new List<ComboItem>();
            list.Add(new ComboItem("女", 0));
            list.Add(new ComboItem("男", 1));
            // DataTable 数据源
            DataTable dtSex = new DataTable();
            DataColumn columnLABELTEXT = new global::System.Data.DataColumn("LABELTEXT", typeof(string), null, global::System.Data.MappingType.Element);
            dtSex.Columns.Add(columnLABELTEXT);
            DataColumn columnVALUE = new global::System.Data.DataColumn("VALUE", typeof(int), null, global::System.Data.MappingType.Element);
            dtSex.Columns.Add(columnVALUE);
            columnLABELTEXT.MaxLength = 20;
            dtSex.Rows.Add(new object[] { "女", 0 });
            dtSex.Rows.Add(new object[] { "男", 1 });
            // 绑定到 List
            sEXDataGridViewTextBoxColumn.DataSource = list;
            // 绑定到  DataTable
            sEXDataGridViewTextBoxColumn.DataSource = dtSex;

1,使用可视化指定列的显示类型后,即 DataGridViewComboBoxColumn

2. 创建该下拉列所依赖的数据源,可以是.Net通用的数据源绑定方式,包括 DataTable , IList

3. 确认 DisplayMember 、ValueMember  和 关联列有没有写对,数据类型是不是一致的。

今天的问题就是跪在第三步了,Oracle中没有bool类型所以就使用 Number(1,0) 结果产生的表的字段类型为 Decimal ,然后数据类型就不一致了,然后就挂了

4.一个修改自动生成EF实体数据类型的小捷径。

083332_dyhp_559187.png

可以从下拉列表里面选择自己需要的数据类型,对于Oracle 中的 Number 在.Net 平台中识别为 Decimal ,即便我的定义是 number(1,0) 这样的逻辑上的整数值。.Net 平台会负责正常的数据类型强制转换,当然你需要决定是不是必须考虑精度和溢出这样特定的情景。

 --  对于 定义为 Number (1,0) 的 性别 这个属性来说,自然不存在这个问题。

转载于:https://my.oschina.net/HenuToater/blog/341730

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WinForm动态下拉列表是指在Windows的Form窗体应用程序中,通过编程的方式动态地向下拉列表框添加或删除选项。这种技术通常用于根据用户的输入或系统的条件来动态更新下拉列表框的选项。在CSDN上有很多关于WinForm动态下拉列表的教程和示例代码供开发人员参考。 要实现WinForm动态下拉列表,首先需要在窗体中添加一个ComboBox控件作为下拉列表框。然后通过编写代码,在合适的时机调用ComboBox控件的相应方法,来添加或删除下拉列表框的选项。 例如,当用户输入特定内容时,可以通过事件处理的方式在代码中捕获到用户的输入,并根据输入内容决定要添加或删除哪些选项。通过调用ComboBox控件的Items属性的Add方法,可以向下拉列表框中添加新的选项;通过调用Remove方法,可以删除指定的选项。 此外,也可以通过绑定数据源的方式实现动态下拉列表。可以将数据源绑定到ComboBox控件的DataSource属性上,并设置显示的文本和值的字段。然后通过更新数据源的方式来更新下拉列表框的选项。 通过在CSDN上搜索WinForm动态下拉列表的相关文章,开发人员可以找到很多实际案例和示例代码,帮助他们了解和掌握这一技术。这些教程和示例代码通常涵盖了如何通过键盘输入、按钮点击以及与数据库等数据源交互的方式来实现动态下拉列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值