c# - 组合框和 System.Data.DataRowView

标签 c# database sql-server-ce

我有一个在主窗体打开时调用的方法

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 获取值您指定为 ComboBoxValueMember 的属性。

关于c# - 组合框和 System.Data.DataRowView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15625479/

相关文章:

c# - 如何将 ASP.NET MVC ViewResult 呈现为 HTML?

php - 替换wordpress数据库中的网站url

c# - 如何使用 Entity Framework 访问子表

c# - 获取表中列中第一个 val 的 SQL 是什么?

windows - Windows 移动应用程序速度慢

c# - 替换 lambda 表达式中的参数

c# - 如何通过将一个C#项目分解为多个项目来加快编译速度

c# - 如何在.Net中使用SQLCipher

mysql - 将分隔的字符串值拆分为行

sql - 如何获取 ROW_NUMBER() 的替代值?