Набор значений C# DataGridViewTextBoxColumn

У меня очень сложная ситуация, надеюсь, я смогу изобразить.

Итак, у меня есть datagridview, который выглядит так:

DataTable dt = new DataTable();    
dataGridViewFood.AutoGenerateColumns = false;

dt.Columns.Add("date", typeof(string));
dt.Columns.Add("food", typeof(int));

DataGridViewTextBoxColumn date = new DataGridViewTextBoxColumn();
date.HeaderText = "date";
date.DataPropertyName = "date";

DataGridViewComboBoxColumn name = new DataGridViewComboBoxColumn();
var list11 = new List<String>() { "food1", "food2", "food3" }; // here later I'll use a mysql select query to fill the list
name.DataSource = list11;
name.HeaderText = "food";
name.DataPropertyName = "food";

dataGridViewFood.DataSource = dt;
dataGridViewFood.Columns.AddRange(date, name);

dataGridViewFood.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;

И проблема в том, что столбец food - это тип int, потому что я храню значения в своей базе данных как int (и у меня есть другая таблица, которая определяет, какое число означает, какая еда).

И если я попытаюсь заполнить datagridview вот так:

[...]
reader = commandDatabase.ExecuteReader();
while (reader.Read())
{
    dt.Rows.Add(new object[] { reader.GetString(0), reader.GetInt32(1) });
}

DataGridViewTextBoxColumn не может установить правильное значение. Итак, что мне нужно, если "reader.GetInt32 (1)" предназначен для ex 1, я хочу установить в поле со списком "food2" и т. д.

Заранее спасибо!

Что такое dt в последнем фрагменте? Если это тот же dt, что и выше, вы должны заполнить таблицу данных, используя либо DataAdapter, либо объект DBCommand. Не уверен, какое отношение это имеет к танцу с колонкой комбо

Ňɏssa Pøngjǣrdenlarp 27.04.2018 20:51

Аа, извини, отредактирую И да, они такие же, но заливка адаптера мне не подходит, потому что запрос возвращается с целыми числами, и я хочу установить строку поля со списком на это целое число, а не заполнять список поля со списком этим.

Gregori 27.04.2018 20:55

Это не исключает наличия DataAdapter, это просто означает, что для его настройки нужно выполнить один или два шага. Вы говорите о совершенно рутинной практике чего-то вроде [ {"apple", 1}, {"orange"}, 12], когда вы показываете текст пользователю, но сохраняете числовой идентификатор? Изучите базу данных, dgv, combo, и вы получите много-много-много хитов здесь.

Ňɏssa Pøngjǣrdenlarp 27.04.2018 21:06

@Plutonix, ты прав! Но я не лучший в поисках, можешь показать мне что-нибудь, что могло бы мне помочь?

Gregori 27.04.2018 21:36

Я дал вам точные условия поиска !!! datagridview data binding combobox cell приносит 61 000 просмотров! 13 900 только на этом сайте,

Ňɏssa Pøngjǣrdenlarp 27.04.2018 21:45

Мой плохой, я имел ввиду как установить выпадающий список? Потому что, как я вижу, dt.Rows.Add (...) не может его установить.

Gregori 27.04.2018 21:52

«исследование» - это не то же самое, что «гуглить код». Последний работает, когда вам нужно напоминание о чем-то вроде порядка аргументов. Исследовать читает статьи по этой теме, чтобы в деталях понять, какой новый аспект вы программируете - программирование - это больше, чем синтаксис. Тем не менее, у вас будет 2 источника данных. 1 для столбца DGV и еще один для столбца CBO. Этот столбец CBOcolumn выполняет сопоставление с помощью DisplayMember и ValueMember. Он показывает одно, но сохраняет другое в DataSource для вас (и вам все равно не следует добавлять какие-либо строки вручную)

Ňɏssa Pøngjǣrdenlarp 27.04.2018 22:28

Но мне нужно добавлять строки «вручную», потому что я их форматирую и не могу отформатировать с заливкой. Я искал последний час и все еще не могу решить свою проблему. Я считаю, что это невозможно ...

Gregori 27.04.2018 23:36

Если food cbo представляет собой пару {String, int}, и вы показываете имя, что нужно отформатировать? Если это ужасный столбец даты / строки, это совсем другая плохая идея. DGV включает в себя возможности формата отображения.

Ňɏssa Pøngjǣrdenlarp 27.04.2018 23:46

Наконец-то я как-то это сделал. Спасибо за помощь!

Gregori 28.04.2018 00:07
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
75
0

Другие вопросы по теме