【问题标题】:c# and sql how to show selected item price in textboxc# 和 sql 如何在文本框中显示所选项目的价格
【发布时间】:2022-12-02 21:35:51
【问题描述】:

我在组合框中选择了项目并在文本框中显示,但我还想显示该项目的价格 在其他文本框中并添加我选择的每个价格

这是我的代码

public void fill_list()
        {
           // listBox1.Items.Clear();
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select TestName from TestTbl";
            cmd.ExecuteNonQuery();
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            foreach (DataRow dr in dt.Rows)
            {
                TestidCb.Items.Add(dr["TestName"].ToString());
              // Cost = Convert.ToInt32(dr["TestCost"].ToString());
            }
            con.Close();

        }

【问题讨论】:

  • 首先您的查询只返回“TestName”,您必须更改查询以获取所有数据。
  • 如果您能详细说明一下,目前有很多问题;我们在哪里可以找到那个价格?它是 TestTbl 中的另一列吗? TestName 在那个表中是唯一的吗?你问的是查询组合框上的数据或事件......还是在组合框中放置更多数据
  • 价格在 testTbl 中,是的,testname 在表中是唯一的,我在组合框中显示所有 testname 数据,价格也在 texbox 中显示,并添加我选择的每个项目

标签: c# sql-server


【解决方案1】:

这会让你开始。 ExecuteNonQuery 已被删除,因为它没有任何用处。

我在 SELECT 声明中添加了“TestPrice”。

我已将 DataTable 绑定到组合框,而不是在循环中添加项目。

我同时设置了 DisplayMember 和 ValueMember。用户只会看到 TestName,但项目的价值是价格。

public void fill_list()
{
    try
    {
        con.Open();
        using(SqlCommand cmd = con.CreateCommand())
        {
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select TestName, TestPrice from TestTbl";
        
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            
            TestidCb.DataSource = dt;
            TestidCb.DisplayMember = "TestName";
            TestidCb.ValueMember = "TestPrice";
        }           
    }
    finally
    {
        con.Close();
    }
}

现在,例如在选定的更改事件中,您可以同时获取 TextName 和价格并执行任何您需要的操作:

private void TestidCb_SelectedIndexChanged(object sender, EventArgs e)
{
    string name = ((ComboBox)sender).Text;
    string price = ((ComboBox)sender).SelectedValue.ToString();

    MessageBox.Show($"Name: {name}, Price: {price}");
}

【讨论】:

    【解决方案2】:

    创建一个类 myProductListItem 有 2 个属性,名称和价格

    在查询中获取名称和价格(从 TestTbl 中选择测试名称、价格)

    把这些放在 myProductListItem 的一个实例中,然后把它放在你的 combobox.items 中

            public class myListItem
            {
                public string Name { get; set; }
                public decimal Price { get; set; }
    
                public override string ToString()
                {
                    return Name;
                }
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                comboBox1.Items.Add(new myListItem(){Name = "myname",Price = 10});
            }
    
            private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                var selected = comboBox1.SelectedItem as myListItem;
                if (selected != null)
                {
                    textBox1.Text = selected.Price.ToString();
    
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多