使用SQL列中的值填充ComboBox

时间:2016-05-21 18:47:17

标签: c# sql sql-server combobox

我正在尝试填充一个禁用的组合框,直到选择了先前组合框中的值,并且SQL Server表中特定列中的所有数据都被填充。

这是我到目前为止所尝试的:

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 Manufacturor=@Manufacturor";

        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)

manufacturor变量为:" System.Data.DataRowView"因为您使用SelectedItemSelectedItem是绑定到ComboBox数据源的数据对象,您可以使用:

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;
}