如何将comboBox中选定值的数据从一种形式传输到另一种形式

时间:2016-08-31 21:22:23

标签: c# sql-server winforms combobox

我有winform,它显示了一个带有comboBox的公司的信息,该组合框现在显示该公司的代表如果我选择其中一个代表并单击所选委托的编辑按钮,则另一个表单应该显示该选定委托的信息允许我修改信息;公司和委托表之间的公共密钥是id,所以如何做到这一点???

这是我编辑公司形式的代码

     delIdVar = Convert.ToInt32(compDelcombox.SelectedValue);              
     DelEditFrm delEditFrm = new DelEditFrm(delIdVar);
     delEditFrm.Show();

这是代理编辑表单

的构造函数的代码
public DelEditFrm(int delIdVar)
  {
     InitializeComponent();
     int delId = delIdVar; 
  }

最后这些代码用于在我的委托编辑表单加载事件

中将列数据加载到textBoxes中
     private void DelEditFrm_Load(object sender, EventArgs e)
        {
            try
            {
                cn.Open();
                cmd = new SqlCommand("select delName,delAdd,delPhone1,delPhone2 from delegate where delId= ' delId  '", cn);
                dr = cmd.ExecuteReader();
                dr.Read();
                delEditNametxt.Text = dr["delName"].ToString();
                delEditAddtxt.Text = dr["delAdd"].ToString();
                delEditPhone1txt.Text = dr["delPhone1"].ToString();
                delEditPhone2txt.Text = dr["delPhone2"].ToString();
            }
            catch(SqlException ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                dr.Close();
                cn.Close();
            }
        }  

当我尝试编辑所选委托时,它给出了一个异常“将varchar值'delId'转换为数据类型int时转换失败”但我表中的dilId列是int类型

1 个答案:

答案 0 :(得分:0)

基本思路是:

  1. 将代理映射到ID。 (这可以存储或查询,如果它真的是一个数据库)
  2. 选择委托后,触发查找该ID并填充对话框的字段。 (再次,查询或查询)
  3. 关闭该对话框时记录更改。 (对该项目的修改)