2015-01-12 6 views
0

У меня есть таблица данных в виде сетки данных. Я хочу поместить список/выпадающее меню в определенный столбец и строку. Я попытался это, но он не работает -Ввод списка/выпадающего меню в виде сетки данных C#

var column = new DataGridViewComboBoxColumn(); 
      RunTimeCreatedDataGridView[1, 1].Value = RunTimeCreatedDataGridView.Columns.Add(column); 

Вот как я заселить table--

public DataTable createGridForForm(int rows, int columns) 
{    
    // Create the output table. 
    DataTable table = new DataTable(); 

    for (int i = 1; i <= columns; i++) 
    { 
     table.Columns.Add("column " + i.ToString()); 
    } 

    for (int i = 1; i < rows; i++) 
    { 
     DataRow dr = table.NewRow(); 
     // populate data row with values here 
     ListBox test = new ListBox(); 
     myTabPage.Controls.Add(test); 
     table.Rows.Add(dr); 
    } 
    return table; 
} 

А вот как я создаю DataGridView.

private void createGridInForm(int rows, int columns) 
{ 
    DataGridView RunTimeCreatedDataGridView = new DataGridView(); 
    RunTimeCreatedDataGridView.DataSource = createGridForForm(rows, columns); 

    //DataGridViewColumn ID_Column = RunTimeCreatedDataGridView.Columns[0]; 
    //ID_Column.Width = 200; 

    int positionForTable = getLocationForTable(); 
    RunTimeCreatedDataGridView.BackgroundColor = Color.WhiteSmoke; 

    RunTimeCreatedDataGridView.Size = new Size(995, 200); 
    RunTimeCreatedDataGridView.Location = new Point(5, positionForTable); 
    myTabPage.Controls.Add(RunTimeCreatedDataGridView);     
} 

ответ

0

Вы были на правильном пути со своим первым блоком кода ... проблема заключалась в том, что вы пытались добавить столбец в ссылку на ячейку. Если вы хотите добавить колонку, в которой все строки имеют падение вниз, а затем делать то, что вы делали, а просто добавить столбец вместо указания значения ячейки, например:

var column = new DataGridViewComboBoxColumn(); 
RunTimeCreatedDataGridView.Columns.Add(column); 

Затем укажите источник данных как вы обычно делали для combobox.

В качестве альтернативы, если вы хотите, чтобы конкретная ячейка имела другую выпадающую ячейку или только одну ячейку в столбце, она может быть отдельной, как показано на рисунке here или here.

Edit: Для того, чтобы добавить выпадающий к определенной ячейке в DataGridView, вы могли бы сделать что-то вроде этого:

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      DataGridView dgv = new DataGridView(); 

      // add some columns and rows 
      for (int i = 0; i < 10; i++) 
      { 
       DataGridViewCell c = new DataGridViewHeaderCell(); 
       dgv.Columns.Add("Column" + i, Convert.ToString(i)); 
      } 

      for (int i = 0; i < 10; i++) 
      { 
       dgv.Rows.Add(new DataGridViewRow()); 
      } 

      //create a new DataGridViewComboBoxCell and give it a datasource 
      var DGVComboBox = new DataGridViewComboBoxCell(); 

      DGVComboBox.DataSource = new List<string> {"one", "two", "three"}; 
      DGVComboBox.Value = "one"; // set default value of the combobox 

      // add it to cell[4,4] of the DataGridView 
      dgv[4, 4] = DGVComboBox; 

      // add the DataGridView to the form 
      this.Controls.Add(dgv); 
     } 
    } 
+0

пожалуйста, помогите мне, я искал ответ на 5h прямо сейчас. Я хочу, чтобы определенная ячейка имела combobox. Можете ли вы помочь мне с кодом – mynameiswhat

+0

я тестировал, но на мой взгляд сетки исчез из вида :( – mynameiswhat

+0

можно добавить: RunTimeCreatedDataGridView [1,1] = новый DataGridViewComboBoxCell(); в коде Поста только после того, как вы назначить datasource в createGridInForm()?, который должен дать вам пустой снимок в ячейке [1,1] и подтвердить, что он будет работать. – DrewJordan

Смежные вопросы