Поле со списком не отображает значение по умолчанию в DataGridView в C # - PullRequest
3 голосов
/ 21 июля 2011

Я пытаюсь разрешить пользователю выбирать значение из DataGridViewComboBoxColumn для каждой новой строки.Я связал ComboBox в GridView с базой данных, но всякий раз, когда я ввожу новую строку, я вижу DataGridViewComboBoxColumn без начального значения.Я должен установить значение в первую очередь.

Как сделать так, чтобы значение по умолчанию появлялось в DataGridViewComboBoxColumn всякий раз, когда я вводил новую строку в DataGridView?

Так я связываю DataGridView ComboBox с базой данных:

bindingSource1.DataSource = itemBAL.GetTable();
dataGridView1.DataSource = bindingSource1; 
ItemName.DataSource = bindingSource1; //Where ItemName is an instance ofDataGridViewComboBoxColumn
ItemName.DisplayMember = "Name";
ItemName.ValueMember = "ItemId";

Ответы [ 3 ]

7 голосов
/ 21 июля 2011

Вы можете использовать свойства DefaultCellStyle.NullValue и DefaultCellStyle.DataSourceNullValue столбца со списком.

Здесь есть довольно обширная статья MSDN здесь .

Я также привел приведенный ниже пример кода:

// Let's say I have this list of cars I want to add to my datagridview
List<Car> cars = new List<Car>();
cars.Add(new Car() { Index = 0, Make = "Ford" });
cars.Add(new Car() { Index = 1, Make = "Chevvy" });
cars.Add(new Car() { Index = 2, Make = "Toyota" });

// I create the column, setting all the various properties
DataGridViewComboBoxColumn col = new DataGridViewComboBoxColumn();
col.DataSource = cars;
col.Name = "Cars";
col.DisplayMember = "Make";
col.HeaderText = "Car";
col.ValueMember = "Index";
col.DataPropertyName = "Car";

// As well as standard properties for a combobox column I set these two:
col.DefaultCellStyle.NullValue = cars[0].Make;
col.DefaultCellStyle.DataSourceNullValue = cars[0].Index;

dataGridView1.Columns.Add(col);

dataGridView1.DataSource = dt;

Одна вещь, которую следует отметить с помощью приведенного выше кода, заключается в том, что я устанавливаю DataPropertyName, чтобы разрешить привязку со свойством в источнике данных datagridview.

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

2 голосов
/ 10 сентября 2012
bindingSource1.DataSource = itemBAL.GetTable();
dataGridView1.DataSource = bindingSource1; 
ItemName.DataSource = bindingSource1; //Where ItemName is an instance ofDataGridViewComboBoxColumn
ItemName.DisplayMember = "Name";
ItemName.ValueMember = "ItemId";

добавить только эту строку

dataGridView1["ItemName",dataGridRowNumber].value=1;//item id value
0 голосов
/ 21 июля 2011

Вы можете добавить элементы в DataGridViewComboBoxColumn в конструкторе или в коде.

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