2012-05-29 75 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