【问题标题】:insert comboBox value插入组合框值
【发布时间】:2017-08-27 11:48:24
【问题描述】:

我尝试在表中插入组合框值我试试这个

public void additem(string name,int cost,int f)
    {
        con.Open();
        cmd = new SqlCommand("insert into Item(ItemName,ItemCost,ItemCategoryIdF)values(@ItemName,@ItemCost,@ItemCategoryIdF)", con);
        cmd.Parameters.AddWithValue("@ItemName", name);
        cmd.Parameters.AddWithValue("@ItemCost", cost);
        cmd.Parameters.AddWithValue("@ItemCategoryIdF", f);
        cmd.ExecuteNonQuery();
    }

然后点击按钮

  private void button1_Click(object sender, EventArgs e)
    {
        con.Open();
        string name = textBox1.Text;
        int cost = Convert.ToInt32(textBox2.Text);
        int f = Convert.ToInt32(comboBox1.Selectedvalue);
        Items ab = new Items();
        ab.additem(name, cost, f);
        cmd.ExecuteNonQuery();
        MessageBox.Show("Item Is Inserted!");
        con.Close();
    }

此插入成功,但是当我签入表时 f 值显示 0 和 0 值已插入表中......那么我如何从 comboBox1in 表中插入选定的值?

当我从组合框中选择值时,该值应该在 f .. 假设组合框中的值是芯片、糖果、饼干,所以如果我选择饼干,那么 f 值应该 b 2 因为芯片 1 ,糖果 2 和饼干 3

更新了代码,但显示错误

**Additional information: Cannot bind to the new display member.**

我在组合框中加载的值

 private void Item_Load(object sender, EventArgs e)
    {
        Global.objCon = new SqlConnection(Global.con);      
        Global.sqlquery=("select CategoryId,CategoryName from Category");
        Global.objCon.Open();
        Global.objcmd = new SqlCommand(Global.sqlquery, Global.objCon);
        Global. dr = Global.objcmd.ExecuteReader();
        ArrayList arr = new ArrayList();
        while(Global.dr.Read())
        {
            AddItem obj=new AddItem(Convert.ToInt16(Global.dr["CategoryId"]),Global.dr["CategoryName"].ToString());
            arr.Add(obj);
        }
        reader.Close();
        Global.objCon.Close();
        comboBox1.DataSource = arr;
        comboBox1.DisplayMember = "CategoryName";
        comboBox1.ValueMember = "Categoryid";


    }

任何帮助

【问题讨论】:

  • f 的原始值是多少?并且无需在按钮单击事件中打开 sql 连接并再次调用 ExecuteNonQuery ,而您已经在 addItem 方法中执行此操作。
  • f 值来自组合框,我评论说执行非查询
  • 在下面查看我的答案。

标签: sql winforms combobox insert


【解决方案1】:

试试这个:

 private void Item_Load(object sender, EventArgs e)
{
    Global.objCon = new SqlConnection(Global.con);      
    Global.sqlquery=("select CategoryId,CategoryName from Category");
    Global.objCon.Open();
    Global.objcmd = new SqlCommand(Global.sqlquery, Global.objCon);
    Global. dr = Global.objcmd.ExecuteReader();
    BindingList<AddItem> arr = new BindingList<AddItem>();
    while(Global.dr.Read())
    {
        AddItem obj=new AddItem(Convert.ToInt16(Global.dr["CategoryId"]),Global.dr["CategoryName"].ToString());
        arr.Add(obj);
    }
    reader.Close();
    Global.objCon.Close();
    comboBox1.DataSource = arr;
    comboBox1.DisplayMember = "CategoryName";
    comboBox1.ValueMember = "Categoryid";
}

【讨论】:

  • 没有。我不想选择索引,因为它从 0 开始,而在数据库表中的值是从 1 而不是从 0 所以当我选择饼干值应该是 3 ..
  • 因为组合框的值是从数据库中填充的
  • 对不起,我告诉你值是从 0 开始的,但我不想要这个
  • 如果您显示的组合框值按其值排序,那么您只需将 1 添加到所选索引,更新后检查我的答案
  • no .. 如果从类别表(ItemCategoryIdF,ItemCategoryname) 中删除值(组合框中的表已填充),如果值只有两个,如薯片、饼干和糖果被删除,则 ItemCategoryIdF 可以订购或不订购表中是 1 和 3 .. 1 用于薯条,3 用于饼干 .. 所以??你选择了我不想选择的索引我想从组合框中选择 ItemCategoryIdF
猜你喜欢
  • 2016-11-16
  • 1970-01-01
  • 2015-08-07
  • 1970-01-01
  • 2014-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多