winform Combox绑定数据并根据value值选中项

时间:2021-06-30 20:03:12
DataTable dtsingletype = singletypeBal.GetDataTable("");
comboBox1.DataSource = dtsingletype;
comboBox1.DisplayMember = "TypeName";
comboBox1.ValueMember = "ID";

选中项:

if (parentid != "")
{
comboBox1.SelectedValue = parentid;//根据ID值选中该项
}

根据text值选中项:

comboBox1.SelectedIndex=comboBox1.FindString("汽配");

combox联动:

int zmlflag = 0;
private void frmMain_Load(object sender, EventArgs e)
{
DataTable dtsingletype = singletypeBal.GetDataTable("");
            cbZML.DataSource = dtsingletype;//绑定数据时会触发selectedindexchanged事件,所以在事件中判断当页面加载完以后再更新下一级数据,且判断选中值是否为空,数据源是否为空
            cbZML.DisplayMember = "TypeName";
            cbZML.ValueMember = "ID";
zmlflag = 1;
}

private void cbZML_SelectedIndexChanged(object sender, EventArgs e)
{
if (flag>0) //页面加载以后 选中项改变再更改数据
{
if (cbZML.DataSource != null && cbZML.SelectedValue!=null && cbZML.SelectedValue.ToString().Trim()!="")
{
DataTable dtsinglesmalltype = singletypesmallBal.GetDataTable(" typeid=" + cbZML.SelectedValue.ToString().Trim());
cbPP.DataSource = dtsinglesmalltype;
cbPP.DisplayMember = "TypeName";
cbPP.ValueMember = "ID";
}
}
}


用参数更新数据时,语句正确,但是更新失败:

StringBuilder strSql = new StringBuilder();
strSql.Append("update tb_SingleTypeSmall set ");
strSql.Append("TypeName=@TypeName,");
strSql.Append("TypeNote=@TypeNote,TypeID=@TypeID");
strSql.Append(" where ID=@ID");
OleDbParameter[] parameters = {
new OleDbParameter("@TypeName", OleDbType.VarChar,50),
new OleDbParameter("@TypeNote", OleDbType.VarChar,200),
new OleDbParameter("@TypeID", OleDbType.Integer,4),//因为@TypeID和@ID换了下位置,导致更新失败,看来这个位置也得对应
new OleDbParameter("@ID",OleDbType.Integer,4)
};
parameters[0].Value = model.TypeName;
parameters[1].Value = model.TypeNote;
parameters[2].Value = model.TypeID;
parameters[3].Value = model.ID;