2012-05-29 73 views
2

我有一个datagridview填充8列组合框和32行。Datagridview Combobox列将不会下拉(C#)

private void frm_Main_Load(object sender, EventArgs e) 
    { 
     // Make 32 rows total 
     for (int i = 0; i <= 30; i++) 
     { 
      DataGridView1.Rows.Add(); 
     } 
     PopulateComboBoxes(); 
    } 

而且我还为它们每个添加了一些项目。出于某种原因,当我点击它们时,它们不会掉下来。

我环顾四周,但似乎没有任何工作。

编辑: 它只是增加每个下拉选项中

public void PopulateDropDowns() 
    { 
     //Get Errors 
     DataSet Errors = SendQueryReturnDataSet("SELECT * FROM DB.Errors"); 
     DataTable dt_Errors = Errors.Tables[0]; 

     //Populate all Drop Downs 
     for (int i = 0; i < dt_Errors.Rows.Count; i++) 
     { 
      for (int x = 0; x<8; x++) 
      { 
       for (int y = 0; y < 32; y++) 
       { 
        (grid_Wafer.Rows[x].Cells[y] as DataGridViewComboBoxCell).Items.Add(dt_Errors.Rows[i][1].ToString()); 
       } 
      } 
     } 

    } 
+0

“PopulateComboBoxes()”不是“相关代码”分享? – LarsTech

+0

那么现在它只是将项目放入应该在点击时下拉的列表中。 – kschieck

+0

在第一个代码片段中,您的网格是“DataGridView1”,在第二个代码片段中,它是“grid_Wafer”。 – LarsTech

回答

0
private void Form1_Load(object sender, EventArgs e) 
{ 
    PopulateComboBoxes(); 
    // Make 32 rows total 
    for (int i = 0; i <= 30; i++) 
    { 
     dataGridView1.Rows.Add(); 
    } 
} 

private void PopulateComboBoxes() 
{ 
    //for each column, set as combobox, then populate 
    var cName = new DataGridViewComboBoxColumn(); 
    cName.Items.Add("John Galt"); 
    cName.Items.Add("Tim Duncan"); 
    cName.Items.Add("King Leonidas"); 
    var cAddress = new DataGridViewComboBoxColumn(); 
    cAddress.Items.Add("Main Street"); 
    cAddress.Items.Add("Broad Street"); 
    cAddress.Items.Add("Market Street"); 

    dataGridView1.Columns.Add(cName); 
    dataGridView1.Columns.Add(cAddress); 

} 
1

我们需要更多的信息来准确地解决这一个。你能告诉我们你的前端代码,也许你的PopulateComboBoxes()方法吗?

有些事情浮现在脑海中,把我的头顶部...

  • 出于某种原因,你的下拉菜单没有得到正确填充(做你的页面的查看源代码,看看是否项目实际上是添加到您的下拉列表中)

  • 也许造型问题? (请检查您的z-index属性,并确保没有在更高的堆栈那么你的下拉列表。请尝试设置下拉菜单的z-index至99999)

即使我的上述建议

不过,我需要看到更多的代码来给出正确的答案。

+0

我也注意到你可能正在使用winforms,这可能有助于指出未来。但是,如果你正在处理webforms我的上述子弹是有帮助的... :) – JonSykes

+0

好的,谢谢你的建议。 – kschieck

1

我有这样的问题。我在调试器中发现的是DataGridViewComboBoxCells的ReadOnly属性设置为True。尽管当我在设计模式中创建它时,我将整个列的属性都视为False。我找不到任何单元格或列设置为只读的位置。在我的代码中,我只在赋值给数据源之后切换读取,组合框现在看起来没什么问题。

编辑:我发现网格的RowTemplate只读设置为True,这导致了这个问题。我认为在我尝试各种设置时肯定会发生。

0

我已经打了这几次,发现如果DataGridView ComboBox列绑定到只读字段(即没有setter定义),它将显示为只读。如果您尝试Rob Hincliff建议的答案,您将得到以下例外:绑定到只读字段的DataGridView列必须将ReadOnly设置为True