2016-05-21 132 views
1

我想填充一個組合框,直到選中前一個組合框中的一個值爲止,並且SQL Server表中的特定列內的所有數據都被選中。從SQL列中填充組合框ComboBox

這是我到目前爲止已經試過:提前

private void cboManufacturor_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string manufacturor = this.cboManufacturor.SelectedItem.ToString(); 

    if (!cboModel.Enabled) 
    { 
     cboModel.Enabled = true; 
    } 

    using (SqlConnection myConnection = new SqlConnection(Program.conString)) 
    { 
     myConnection.Open(); 
     string queryString = "SELECT * FROM tblStock WHERE [email protected]"; 

     SqlCommand myCommand = new SqlCommand(queryString, myConnection); 
     myCommand.Parameters.AddWithValue("@Manufacturor", manufacturor); 

     SqlDataReader DR; 

     using (DR = myCommand.ExecuteReader()) 
     { 
      while (DR.Read()) 
      { 
       cboModel.Items.Add((string)DR["Model"]); 
      } 
     } 
    } 
} 

感謝任何及所有的幫助!

院長

編輯:對不起,忘了說什麼我實際上遇到的問題了!當選擇原始ComboBox(cboManufacturor)中的值時,將啓用第二個ComboBox(cboModel),但不會添加任何值。

+1

你的代碼有什麼問題? –

+0

對不起,我更新了我面臨的問題的帖子 –

+1

檢查您是否從查詢中獲取數據? –

回答

1

manufacturor變量是:「System.Data.DataRowView」因爲你用SelectedItemSelectedItem是綁定到組合框的數據源中的數據對象,你可以使用:

string manufacturor = this.cboManufacturor.Text; 

或投的SelectedItem到DataRowView的,然後檢索從它的適當的值是這樣的:

DataRowView oDataRowView = this.cboManufacturor.SelectedItem as DataRowView; 
string manufacturor = string.Empty; 

if (oDataRowView != null) { 
    manufacturor = oDataRowView.Row["YourFieldName"] as string; 
} 
+0

我之前嘗試過,但是我嘗試了一個斷點,結果和上面一樣。謝謝! –

+1

試試'string manufacturor = this.cboManufacturor.Text;' –

+0

這已經奏效了!謝謝!如果可以的話,更新上述評論的答案,我會接受作爲答案,如果可能的話,你是否可以添加一些關於如果你知道問題的信息?就這樣我知道未來!謝謝! –