设置DataGridViewComboBoxColumn列的默认值

  因为工作需要,最近用到了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数据源时效果如下:

  第二种情况,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",那么每次点击添加新行时,"学院"一栏都是"计算机学院"了,效果如下:

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

时间: 2024-10-15 00:29:22

设置DataGridViewComboBoxColumn列的默认值的相关文章

在Sql Server数据表中使用Guid类型的列及设置Guid类型的默认值

1.列的类型为uniqueidentifier 2.列的默认值可以设为newid() 3.程序里字符转换成guid string xxx="xxxx-xxxx-xxx";  guid nn= new guid(xxx)

设置下拉列表项的默认值

因为工作需要,最近用到了DataGridViewComboBoxColumn,需要让它在DataGridView中显示时包含默认值.在网上查找过相关资料,对于我这种新手来说理解起来仍是困难,索性自己动手写了一个测试程序,若有说的不对的地方欢迎拍砖:-). DataGridViewComboBoxColumn列用于在DataGridView单元格中实现具有类似ComboBox的功能,就是可以从下拉框中选择需要显示在单元格中的内容.在设置默认值的时候,有两种情况:一是DataGridView显示时已

hibernate设置mysql的timestamp默认值技巧

首先,要想使用数据库中配置的默认值就必须不让hibernate覆盖了默认值,需要配置property insert="false" update="false",告诉hibernate不对该属性执行insert.update操作,这要就不会覆盖我们在数据库中配置的默认值了.除此之外,我们还需要配置hibernate对该表的操作,dynamic-insert="true" dynamic-update="true", 实现动态的

MySQL datetime数据类型设置当前时间为默认值

环境:MySQL Sever 5.1 + MySQL命令行工具 问题:MySQL datetime数据类型设置当前时间为默认值 解决: 方法一: 由于MySQL目前字段的默认值不支持函数,所以以create_time datetime default now() 的形式设置默认值是不可能的.代替的方案是使用TIMESTAMP类型代替DATETIME类型. TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作.如果有多个TIMESTAMP列,只有第一个自动更新. 自

为列增加默认值限制(Adding a default constraint)

我们可以为表中的某一列增加一个默认值,如上文中我们创建了tblPerson表,该表有GenderId列.我们可以使用下面的代码为该列增加默认值: Alter Table tblPerson Add Constraint DF_tblPerson_GenderId Default 3 For GenderId 同时我们也可以在为表增加新列的时候指定默认值,下面的代码为tblPerson增加一个地址列Address,同时为该地址指定了默认值"CHONGQING": Alter Table

constraint更新表列约束默认值

--更新约束 alter TABLE [dbo].[Sk_Recruit] drop constraint DF_Sk_Recruit_lastcommenttime go alter TABLE [dbo].[Sk_Recruit] add constraint DF_Sk_Recruit_lastcommenttime DEFAULT (getdate()) for [lastcommenttime] go constraint更新表列约束默认值

数据库字段设置为<非空><默认值>

为什么数据库要设置默认值呢?因为我们希望在插入数据时,有意或无意间被忽略的字段能够交由MySQL按我们事先预想的方式处理,例如一些默认正常状态码.用户插入数据时候尚未设置的文本字段,诸如此类. 假设student表里有一个字段score被设置为<非空><默认值>,插入一条数据记录时,score字段值为空<''>,那这时score的字段值为<''>还是<默认值>? 设置默认值的作用只有在忽略了字段时才会发挥作用.何为忽略了字段,就是在写SQL插入语

HTML input文本框设置和移除默认值

这里想实现的效果是:设置和移除文本框默认值,如下图鼠标放到文本框中的时候,灰字消失. 1.可以用简单的方式,就是给input文本框加上onfocus属性,如下代码: <input id="keyword" name="keyword" size="10" class="inputstyle keywords" value="请输入关键字进行搜索" onfocus='if(this.value==&qu

ajaxSetup设置Ajax请求的默认值

ajaxSetup() 方法为将来的 AJAX 请求设置默认值.语法$.ajaxSetup({name:value, name:value, ... }) 该参数为带有一个或多个名称/值对的 AJAX 请求规定设置.下面的表格中列出了可能的名称/值:名称 值/描述async 布尔值,表示请求是否异步处理.默认是 true.beforeSend(xhr) 发送请求前运行的函数.cache 布尔值,表示浏览器是否缓存被请求页面.默认是 true.complete(xhr,status) 请求完成时运