设置下拉列表项的默认值

摘要:
在网上查找过相关资料,对于我这种新手来说理解起来仍是困难,索性自己动手写了一个测试程序,若有说的不对的地方欢迎拍砖:-)。DataGridViewComboBoxColumn列用于在DataGridView单元格中实现具有类似ComboBox的功能,就是可以从下拉框中选择需要显示在单元格中的内容。在设置默认值的时候,有两种情况:一是DataGridView显示时已绑定了数据源;二是DataGridView显示时未绑定数据源,只是在新增行时需要显示默认值。

因为工作需要,最近用到了DataGridViewComboBoxColumn,需要让它在DataGridView中显示时包含默认值。在网上查找过相关资料,对于我这种新手来说理解起来仍是困难,索性自己动手写了一个测试程序,若有说的不对的地方欢迎拍砖:-)。

DataGridViewComboBoxColumn列用于在DataGridView单元格中实现具有类似ComboBox的功能,就是可以从下拉框中选择需要显示在单元格中的内容。在设置默认值的时候,有两种情况:一是DataGridView显示时已绑定了数据源;二是DataGridView显示时未绑定数据源,只是在新增行时需要显示默认值。

第一种情况,假设DataGridView显示到界面时已绑定了数据源,我们需要设置DataGridViewComboBoxColumn列的DataPropertyName列为DataGridView绑定的数据源列的名称,部分代码如下:

DataTable dept = new DataTable();
DataColumn col = new DataColumn("dept_id", Type.GetType("System.String")) { Unique = true };//学院代码 dept.Columns.Add(col); col = new DataColumn("dept_name", Type.GetType("System.String"));//学院名称 dept.Columns.Add(col); dept.Rows.Add("001", "计算机学院"); dept.Rows.Add("002", "电气学院"); dept.Rows.Add("003", "机械学院");
DataGridViewComboBoxColumn cbxCol = new DataGridViewComboBoxColumn { Name = "Udept", DataSource = dept, DisplayMember = "dept_name",//DataGridViewComboBoxColumn数据源中的列 ValueMember = "dept_id", DataPropertyName = "Udept",//注意,DataGridView数据源中的列 HeaderText = "学院", DisplayStyle = DataGridViewComboBoxDisplayStyle.DropDownButton//这里设置为DropDownButton是为了看起来更像ComboBox }; dgv.Columns.Add(cbxCol);

可以看到DisplayMember和ValueMember属性与ComboBox中的使用是一样的,并且ValueMember与DataPropertyName值也不同(这样看起来数据源比较有层次,也可以设置为相同,不过理解起来不是特别直观),DataGridView绑定的数据源为stu,其声明如下,

DataTable stu = new DataTable(); DataColumn col = new DataColumn("Uno", Type.GetType("System.String"));//学号 stu.Columns.Add(col); col = new DataColumn("Uname", Type.GetType("System.String"));//姓名 stu.Columns.Add(col); col = new DataColumn("Udept", Type.GetType("System.String"));//院系 stu.Columns.Add(col);
stu.Rows.Add("2013001", "Jerry", "001");
stu.Rows.Add("2013002", "Tom", "002");
stu.Rows.Add("2013003", "Mike", "003");

可以看到stu表中Udept列的数据全部来源于dept表中的dept_id列。

当在Form_Load()中绑定DataGridView数据源时效果如下:

设置下拉列表项的默认值第1张

第二种情况,DataGridView显示时未绑定数据源,只是在新增行时需要显示默认值,部分代码如下:

需要将DataGridView的AllowUserToAddRows属性设为false,为true时新增的行不能设置默认值(能力有限,还没找到办法,希望大家不吝赐教~);新建AddNewRow()方法如下,

private void AddNewRow() { DataRowView dr = ((DataTable)dgv.DataSource).DefaultView.AddNew(); dr["Udept"] = "001";//这里注意,DataGridView的数据源中"学院"一列对应的是Udept,千万别写成dept_id了 dr.EndEdit(); }

新增行时指定了Udept列的值为"001",那么每次点击添加新行时,"学院"一栏都是"计算机学院"了,效果如下:

设置下拉列表项的默认值第2张

需要完整源码的请留言,大家共同进步吧;-)

免责声明:文章转载自《设置下拉列表项的默认值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇asp11分布式调度任务管理——Dkron(2)运行配置下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C# WinForm开发系列 DataGrid/DataGridView

在WinForm开发中,DataGrid/DataGridView被广泛使用于绑定数据库中数据进行呈现.整理一些关于DataGrid /DataGridView使用的文章,涉及DataGrid/DataGridView基本功能,自定义绘制控件,数据导入/导出(Excel),打印 等. 1.新数据网格简介(DataGridView) 2.自定义DataGri...

让DataGridView的列宽自适应内容

在使用DataGridView操作数据的时候,为了美观,希望列宽可以适应内容。 其实就一行代码: Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells; 这就搞定了,效果就是列宽会根据内容以及表头宽度自行判断,最后调整到合适的宽度。 AutoSizeMode这个属性并不显示在“属...

DataGridView复选框实现全选功能,并取被选中的某行某列的值(三)

目标: 一、选中全选这个复选框,会选中第一列所有的复选框  拉过来一个CheckBox控件(CheckBox1)覆盖在第一列的标题上,文本值:全选 方法:双击上面拉的CheckBox控件,进入其事件 private void checkBox1_CheckedChanged(object sender, EventArgs e) {...

编辑datagridview单元格

以这3种为例,最简单的是第三种,直接让单元格处于可编辑状态,当完成编辑后触发CellEndEdit事件,最后对输入的数据进行处理。 1 private DateTimePicker dtp = new DateTimePicker(); 2 private ComBox sellstyle = new ComBox ();//设置全局变量 View C...

C#窗体控件DataGridView常用设置

C#窗体控件DataGridView常用设置 在默认情况下,datagridview的显示效果: 1.禁用最后一行空白。   默认情况下,最后一行空白表示自动新增行,对于需要在控件中进行编辑,可以保留 dataGridView1.AllowUserToAddRows = false;   上述禁用,仅是将用户界面交互的自动新增行禁了,但还是可以通过代码:...

C#winform解析marc显示在datagridview中以及marc卡片显示

结果显示:marc显示: 卡片显示: 程序一个类: public class MARC { #region 界面上要显示的元素 public string ztm = "";//正题名 public string ftm = "";//副题名 public string fcm = "";//分册(辑)名 public string fch = "";...