Как получить или установить данные из ComboBox в DataGridView - PullRequest
1 голос
/ 31 марта 2010

В C # .net я хочу получить или установить данные для ComboBox в каждой ячейке DataGridView Что мне делать.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 31 марта 2010

Вам нужно использовать 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

0 голосов
/ 18 марта 2017

Попробуйте это ...

private void PopulateData()
{            
   while (condition) //Columns[0] is where your ComboBoxColumn index
      (dataGridView1.Columns[0] as DataGridViewComboBoxColumn)
      .Items.Add("Item 1");
}
0 голосов
/ 31 марта 2010

Во-первых, если вы еще этого не сделали, решите, как вы собираетесь предоставлять данные для DataGridView (виртуальный режим, привязка данных и т. Д.).

Затем добавьте значения, которые пользователь может выбрать в коллекцию Items в заголовке столбца (при условии, что это DataGridViewComboBoxColumn).

После этого установите значение отдельных ячеек, используя выбранный вами метод предоставления базовых данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...