Выпадающий Combobox внутри datagridview

Я слишком долго боролся с этой проблемой, я видел все ответы по этому вопросу, и хотя я нашел несколько, ни один из них, похоже, не работает для меня. Итак, суть моей проблемы заключается в следующем: у меня есть DataGridView, который будет добавлять строку к себе один раз DataGridView ячейка дважды щелкается. Когда этот DataGridView добавляет добавленную строку, он добавляет к себе 2 типа столбцов, один из которых является ComboBox, в которой уже установлена ​​подборка (просто перейдите к опциям ComboBox внутри таблицы данных и заполнил ее коллекцию) и столбец флажка, теперь оба они ничего не делают, когда я нажимаю на них, делаю двойные щелчки, многократные щелчки столько раз, сколько вы хотите, но ничего не происходит. Я даже попробовал следующий код.

public static void combolist(DataGridView combogrid)            
{

    var column = new DataGridViewComboBoxColumn();

    DataTable data = new DataTable();

    data.Columns.Add(new DataColumn("Value", typeof(string)));
    data.Columns.Add(new DataColumn("Description", typeof(string)));

    data.Rows.Add("item1");
    data.Rows.Add("item2");
    data.Rows.Add("item3");

    column.DataSource = data;
    column.ValueMember = "Value";
    column.DisplayMember = "Description";

    combogrid.Columns.Add(column); 
}

и хотя я могу добавить новый столбец типа ComboBox в мой DataGridView это все еще пусто (или кажется, так как я не могу щелкнуть, чтобы увидеть выпадающий список). мои данные DataGridView свойства gridview установлены в:

  

editMode: editOnEnter, readOnly: false.

Есть ли что-то, чего мне здесь не хватает? почему я не могу заполнить или отобразить этот ComboBox ?, плз, эта проблема сводит меня с ума, и я считаю, что это лучший сайт, чтобы найти ответ. Я был бы очень признателен ... очень.

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

DataGridViewComboBoxCell ComboColumn = (DataGridViewComboBoxCell)(combogrid.Rows[0].Cells[2]);

ComboColumn.DataSource = class.details.GetData();
ComboColumn.DisplayMember = "name";

есть ли какой-то основной шаг, который я пропускаю при работе с ComboBox внутри DataGridView

7 голосов | спросил user2793090 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 27 Sep 2013 08:52:31 +0400 2013, 08:52:31

3 ответа


0

Некоторые мысли:

  1. Я проверил ваш код, опубликованный в Visual Studio 2012, и выполнил код, нажав Button с пустым DataGridView. Это сработало для меня, потому что я получил DataGridComboBoxColumn с ComboBox с тремя пустыми записями. Я расширил код, как показано ниже, и получил три именованные записи:

        data.Columns.Add(new DataColumn("Value", typeof(string)));
        data.Columns.Add(new DataColumn("Description", typeof(string)));
    
        data.Rows.Add("item1");
        data.Rows[data.Rows.Count - 1].SetField("Value", "value1");
        data.Rows[data.Rows.Count - 1].SetField("Description", "description1");
        data.Rows.Add("item2");
        data.Rows[data.Rows.Count - 1].SetField("Value", "value2");
        data.Rows[data.Rows.Count - 1].SetField("Description", "description2");
        data.Rows.Add("item3");
        data.Rows[data.Rows.Count - 1].SetField("Value", "value3");
        data.Rows[data.Rows.Count - 1].SetField("Description", "description3");
    
        column.DataSource = data;
    

    Кажется, что ваш код просто добавляет строку с именем "item1 /2/3" или строку, которая только что получила первый столбец ("Value", который не является вашим отображаемым значением), заполненный данным значением, в таблицу данных без значений который может быть отображен. В конце я не смог воспроизвести вашу проблему с невозможностью открыть раскрывающийся список (обратите внимание, что я использовал пустой DataGridView, потому что я не не знаю, что еще у вас есть в DataGridView).

  2. Я не знаю, является ли опубликованный код именно тем кодом, с которым у вас возникли проблемы. Но вы пишете, что добавляете строку в свой DataGridView при нажатии на ячейку и что, когда это происходит, вы добавляете два столбца. Вы подразумеваете, что добавляете для каждой добавленной строки два столбца в сетку или вы просто подразумеваете, что строка состоит из этих двух столбцов?
    Если последнее верно, мне кажется, что проблема похожа на опубликованный код. Рассматривали ли вы создание строки вручную с добавлением DataGridViewComboBoxCell и DataGridViewCheckboxCell? У нас есть довольно сложный DataGridViewUserControl, где мы динамически добавляем различные типы ячеек и не испытываем проблем с их корректным отображением. Но мы создаем все строки вручную, заполняя желаемые типы ячеек вручную в строки и не определяя тип для столбца.

ответил Onsokumaru 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 27 Sep 2013 09:46:33 +0400 2013, 09:46:33
0

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

        var column = new DataGridViewComboBoxColumn();

        DataTable data = new DataTable();

        data.Columns.Add(new DataColumn("Value", typeof(string)));
        data.Columns.Add(new DataColumn("Description", typeof(string)));

        data.Rows.Add("item1","123");
        data.Rows.Add("item2","234");
        data.Rows.Add("item3","245");

        column.DataSource = data;
        column.ValueMember = "Value";
        column.DisplayMember = "Description";

        dataGridView1.Columns.Add(column);
ответил ssug89 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 27 Sep 2013 09:47:48 +0400 2013, 09:47:48
0

Это потому, что у вашего DataTable есть 2 columns. Но вы добавляете только значения для ячеек в столбце 1, ячейки в столбце 2 (которые будут использоваться как DisplayMember вашего comboBox) имеют пустые значения. Попробуйте вместо этого:

//.....
data.Rows.Add("item1","This is Item1");
data.Rows.Add("item2","This is Item2");
data.Rows.Add("item3","This is Item3");
//.....
ответил King King 27 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 27 Sep 2013 09:35:22 +0400 2013, 09:35:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132