2016-05-21 88 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

这已经奏效了!谢谢!如果可以的话,更新上述评论的答案,我会接受作为答案,如果可能的话,你是否可以添加一些关于如果你知道问题的信息?就这样我知道未来!谢谢! –