我正在尝试填充一个禁用的组合框,直到选择了先前组合框中的值,并且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),但不会添加任何值。答案 0 :(得分:1)
manufacturor
变量为:" System.Data.DataRowView
"因为您使用SelectedItem
,SelectedItem
是绑定到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;
}