[英]Combobox and System.Data.DataRowView
我有一个在打开主窗体时调用的方法
private void populateComboBoxes()
{
SqlCeDataAdapter breakfastAdapter = new SqlCeDataAdapter("SELECT DISTINCT recipeName FROM Recipe WHERE Category = 'breakfast' ", databaseConnection);
SqlCeDataAdapter lunchAdapter = new SqlCeDataAdapter("SELECT DISTINCT recipeName FROM Recipe WHERE Category = 'lunch' ", databaseConnection);
breakfastAdapter.Fill(breakfastDS, "Recipe");
lunchAdapter.Fill(lunchDS, "Recipe");
cmbBox1.DisplayMember = "recipeName";
cmbBox1.ValueMember = "recipeName";
cmbBox1.DataSource = breakfastDS.Tables["Recipe"];
cmbBox2.DataSource = lunchDS.Tables["Recipe"];
cmbBox2.DisplayMember = "recipeName";
cmbBox2.ValueMember = "recipeName";
}
它基本上根据SELECT语句填充两个组合框。 一旦这个方法击中cmbBox1.DataSource = breakfastDS.Tables["Recipe"]
它就会停止执行并移动到这个方法:
private void cmbBox1_SelectedIndexChanged(object sender, EventArgs e)
{
rtbPicture.Visible = false;
string qry = "";
qry = "SELECT DISTINCT ingredientName FROM Recipe WHERE recipeName = " + cmbBox1.SelectedItem.ToString();
SqlCeCommand com = new SqlCeCommand(qry, databaseConnection);
com.CommandText = qry;
rtbRecipe.Text = com.ExecuteScalar().ToString();
}
这种方法应该执行SELECT语句,并把这些信息在richtextbox
,但由于某种原因cmbBox1
未设置。 根据我的理解,第一个combobox
已经在前一个方法中设置了显示和值成员。 但是,当我到达cmbBox1.SelectedItem.ToString()
它返回System.Data.DataRowView
而不是combobox
的实际字符串。 我不确定为什么它给我System.Data.DataRowView
而不是字符串。
您正在使用cmbBox1.SelectedItem.ToString()
。 您可能应该使用SelectedValue
:
qry = "SELECT DISTINCT ingredientName FROM Recipe WHERE recipeName = " + cmbBox1.SelectedValue.ToString();
SelectedItem
获取实际的ComboBox
项(在本例中为DataRowView
),而SelectedValue
获取您指定为ComboBox
的ValueMember
的属性的值。
cmbBox2.DisplayMember =“recipeName”;
cmbBox2.DataSource = lunchDS.Tables [“Recipe”];
cmbBox2.ValueMember =“recipeName”;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.