在C#.net中,我想在DataGridView的每个单元格中获取或设置数据到ComboBox 我该怎么办。
感谢。
答案 0 :(得分:2)
您需要使用DataGridViewComboBoxColumn
。
填充下拉列表有两种方法。您可以使用通过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; }
}
假设在设计器中添加了DataGridViewComboBoxColumn作为第一列,DataGridViewTextBoxColumn作为第二列。
您应该看到的是组合框有三个用户可用。对于三个帐户,DataGridView应该有三行来自数据源,并且应为每个帐户选择正确的组合框值。
对于任何DataGridView开发,您会发现非常方便的资源是DataGridView Faq
答案 1 :(得分:0)
首先,如果您还没有这样做,请确定如何向DataGridView
提供数据(虚拟模式,数据绑定等)。
然后将用户可以选择的值添加到列标题上的Items
集合中(假设它是DataGridViewComboBoxColumn
)。
之后,使用您选择的基础数据提供方法设置单个单元格的值。
答案 2 :(得分:0)
试试这个......
local