C# 如何从DataGridView中的ComboBox获取或设置数据
在C#.net中,我希望在DataGridView的每个单元格中获取或设置ComboBox的数据 我该怎么办C# 如何从DataGridView中的ComboBox获取或设置数据,c#,winforms,datagridview,combobox,C#,Winforms,Datagridview,Combobox,在C#.net中,我希望在DataGridView的每个单元格中获取或设置ComboBox的数据 我该怎么办 谢谢。首先,如果您尚未这样做,请决定如何向DataGridView提供数据(虚拟模式、数据绑定等) 然后将用户可以选择的值添加到列标题上的项集合中(假设它是DataGridViewComboxColumn) 然后,使用您选择的底层数据提供方法设置各个单元格的值。您需要使用DataGridViewComboxColumn 填充下拉列表有两种方法。您可以使用通过Items属性返回的集合手动设
谢谢。首先,如果您尚未这样做,请决定如何向
DataGridView
提供数据(虚拟模式、数据绑定等)
然后将用户可以选择的值添加到列标题上的项
集合中(假设它是DataGridViewComboxColumn
)
然后,使用您选择的底层数据提供方法设置各个单元格的值。您需要使用
DataGridViewComboxColumn
填充下拉列表有两种方法。您可以使用通过Items属性返回的集合手动设置它,也可以通过DataSource、DisplayMember和ValueMember属性将列绑定到数据源。这与WinForms ComboBox控件相同
以编程方式设置数据源的示例如下:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
dataGridView1.AutoGenerateColumns = false;
List<User> users = new List<User>();
users.Add(new User(){Name = "Fred", Id = 1});
users.Add(new User(){Name = "Jill", Id = 2});
users.Add(new User(){Name = "Bob", Id = 3});
List<Account> accounts = new List<Account>();
accounts.Add(new Account(){AccountName = "Mr Smith", UserId = 1});
accounts.Add(new Account() { AccountName = "Ms Brown", UserId = 2 });
accounts.Add(new Account() { AccountName = "Mr Smith 2", UserId = 1 });
dataGridView1.DataSource = accounts;
DataGridViewTextBoxColumn col1 = dataGridView1.Columns[1] as DataGridViewTextBoxColumn;
col1.DataPropertyName = "AccountName";
DataGridViewComboBoxColumn col = dataGridView1.Columns[0] as DataGridViewComboBoxColumn;
col.DataSource = users;
col.DisplayMember = "Name";
col.DataPropertyName = "UserId";
col.ValueMember = "Id";
}
}
public class User
{
public string Name { get; set; }
public int Id { get; set; }
}
public class Account
{
public string AccountName { get; set; }
public int UserId { get; set; }
}
公共部分类表单1:表单
{
公共表格1()
{
初始化组件();
dataGridView1.AutoGenerateColumns=false;
列表用户=新列表();
添加(新用户(){Name=“Fred”,Id=1});
添加(新用户(){Name=“Jill”,Id=2});
添加(新用户(){Name=“Bob”,Id=3});
列表试试这个
private void PopulateData()
{
while (condition) //Columns[0] is where your ComboBoxColumn index
(dataGridView1.Columns[0] as DataGridViewComboBoxColumn)
.Items.Add("Item 1");
}