虽然在Visual Studio中 DataGridView控件的DataGridViewComboBoxColumn可以实现下拉列表框,但这样的列会在整列中都显示下拉列表框,不太美观,而且还要用代码实现数据绑定。本文介绍一种只在当前编辑单元格中显示下拉列表框的方法,供大家参考。
首先新建一个Windows应用程序,将主窗体重命名为MainForm,在MainForm中加入一个DataGridView控件,命名为dgv_User。如下图所示:
打开窗体代码窗口,在代码窗口中声明一个ComboBox的控件
//
定义下拉列表框
private ComboBox cmb_Temp = new ComboBox();
private ComboBox cmb_Temp = new ComboBox();
我们要绑定的下拉列表框的功能是选择性别,添加如下绑定性别下拉列表框的方法
///
<summary>
/// 绑定性别下拉列表框
/// </summary>
private void BindSex()
{
DataTable dtSex = new DataTable();
dtSex.Columns.Add( " Value " );
dtSex.Columns.Add( " Name " );
DataRow drSex;
drSex = dtSex.NewRow();
drSex[ 0 ] = " 1 " ;
drSex[ 1 ] = " 男 " ;
dtSex.Rows.Add(drSex);
drSex = dtSex.NewRow();
drSex[ 0 ] = " 0 " ;
drSex[ 1 ] = " 女 " ;
dtSex.Rows.Add(drSex);
cmb_Temp.ValueMember = " Value " ;
cmb_Temp.DisplayMember = " Name " ;
cmb_Temp.DataSource = dtSex;
cmb_Temp.DropDownStyle = ComboBoxStyle.DropDownList;
}
/// 绑定性别下拉列表框
/// </summary>
private void BindSex()
{
DataTable dtSex = new DataTable();
dtSex.Columns.Add( " Value " );
dtSex.Columns.Add( " Name " );
DataRow drSex;
drSex = dtSex.NewRow();
drSex[ 0 ] = " 1 " ;
drSex[ 1 ] = " 男 " ;
dtSex.Rows.Add(drSex);
drSex = dtSex.NewRow();
drSex[ 0 ] = " 0 " ;
drSex[ 1 ] = " 女 " ;
dtSex.Rows.Add(drSex);
cmb_Temp.ValueMember = " Value " ;
cmb_Temp.DisplayMember = " Name " ;
cmb_Temp.DataSource = dtSex;
cmb_Temp.DropDownStyle = ComboBoxStyle.DropDownList;
}
通常情况下我们都是从数据库中获取数据表(或者数据集),然后绑定到DataGridView中的,这里我们为了避免连接数据库,手中构造一个数据库表,代码如下:
private
void
BindData()
{
DataTable dtData = new DataTable();
dtData.Columns.Add( " ID " );
dtData.Columns.Add( " Name " );
dtData.Columns.Add( " Sex " );
DataRow drData;
drData = dtData.NewRow();
drData[ 0 ] = 1 ;
drData[ 1 ] = " 张三 " ;
drData[ 2 ] = " 1 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[ 0 ] = 2 ;
drData[ 1 ] = " 李四 " ;
drData[ 2 ] = " 1 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[ 0 ] = 3 ;
drData[ 1 ] = " 王五 " ;
drData[ 2 ] = " 1 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[ 0 ] = 4 ;
drData[ 1 ] = " 小芳 " ;
drData[ 2 ] = " 0 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[
{
DataTable dtData = new DataTable();
dtData.Columns.Add( " ID " );
dtData.Columns.Add( " Name " );
dtData.Columns.Add( " Sex " );
DataRow drData;
drData = dtData.NewRow();
drData[ 0 ] = 1 ;
drData[ 1 ] = " 张三 " ;
drData[ 2 ] = " 1 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[ 0 ] = 2 ;
drData[ 1 ] = " 李四 " ;
drData[ 2 ] = " 1 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[ 0 ] = 3 ;
drData[ 1 ] = " 王五 " ;
drData[ 2 ] = " 1 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[ 0 ] = 4 ;
drData[ 1 ] = " 小芳 " ;
drData[ 2 ] = " 0 " ;
dtData.Rows.Add(drData);
drData = dtData.NewRow();
drData[