C#----动态加载DataGridView中DataGridViewComboBoxColumn中的值

本文介绍如何在C#中动态加载DataGridView的DataGridViewComboBoxColumn,通过结合SQL查询从users和usergroup表中获取数据。示例代码展示了如何设置DataSource、DisplayMember和ValueMember,以及注意事项,如确保ValueMember的DataType与DataPropertyName匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace Sys
{
    public partial class Form3 : Form
     {
        public Form3()
         {
             InitializeComponent();
         }

        private void Form3_Load(object sender, EventArgs e)
         {
             dataGridView1.AllowUserToAddRows = false;
             dataGridView1.AutoGenerateColumns = false;

            using (SqlConnection sqlconn = new SqlConnection("server=.;uid=sa;pwd=sa;database=xx"))
             {
                string sql1 = @"select userid,fullname,a.[description],b.ugroupid
                                 from users a left outer join usergroup b
                                 on a.grade=b.ugroupid";
                string sql2 = "select distinct ugroupid,[description] from usergroup";

                 DataGridViewComboBoxColumn dgvComboBoxColumn = dataGridView1.Columns["grade"] as DataGridViewComboBoxColumn;
                 dgvComboBoxColumn.DataPropertyName = "ugroupid";
                 dgvComboBoxColumn.DataSource = GetTable(sql2).DefaultView;//必须在设置dataGridView1的DataSource的属性前设置
                 dgvComboBoxColumn.DisplayMember = "description";
                 dgvComboBoxColumn.ValueMember = "ugroupid";

                 dataGridView1.DataSource = GetTable(sql1).DefaultView;//一定要在dgvComboBoxColumn的DataSource后设置
             }
         }

        private DataTable GetTable(string sql)
         {
            using (SqlConnection sqlconn = new SqlConnection("server=.;uid=sa;pwd=yuling1310;database=smls"))
             {
                 DataTable dt = new DataTable();
                 SqlDataAdapter sqlda = new SqlDataAdapter(sql, sqlconn);
                 sqlda.Fill(dt);
                return dt;
             }
         }
     }
}
注意事项:
.注意其ValueMember的DataType与DataPropertyName对应的列的DataType要相同,他不会为你做类型转换的。
2.编程设置显示样式时注意一定要在设置DataSource之前设置DataGridViewComboBoxColumn的DataSource等属性。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值