private void readDept () { //读取ERP生产部门的值 // 执行SQL查询语句,让cbx_p_cat显示已有的类别 DateTime selectedDate = dtpKanBan.Value.Date; // 只获取日期部分 using (SqlConnection connection = new SqlConnection(erpConnString)) { connection.Open(); string query = "SELECT DISTINCT dep, (select name from dept where dep=mf_mo.dep) as name FROM mf_mo WHERE sta_dd = @selectedDate "; using (SqlCommand command = new SqlCommand(query, connection)) { command.Parameters.AddWithValue("@selectedDate", selectedDate); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dataTable = new DataTable(); //// 填充DataTable对象 adapter.Fill(dataTable); // 添加默认显示值 DataRow defaultRow = dataTable.NewRow(); defaultRow["dep"] = ""; defaultRow["name"] = "选生产部门"; dataTable.Rows.InsertAt(defaultRow, 0); // 设置cboDept的显示值和对应的数据值 cboDept.DataSource = dataTable; cboDept.DisplayMember = "name"; cboDept.ValueMember = "dep";

// 设置label1显示对应的dep lblDept.DataBindings.Add("Text", dataTable, "dep"); } } }

上述代码调用期间会提示lblDept.DataBindings.Add("Text", dataTable, "dep"); 这将导致集合中的两个绑定绑定到同一个属性内容:如果你想要dep值唯一性,而不是有重复值,可以使用DISTINCT关键字来去除重复的值。在查询语句中添加DISTINCT关键字,如下所示:

string query = "SELECT DISTINCT dep, (select name from dept where dep=mf_mo.dep) as name FROM mf_mo WHERE sta_dd = @selectedDate";

这样查询到的dep值将是唯一的,不会有重复值。

另外,关于绑定的问题,你可以将绑定操作放在设置cboDept的显示值和对应的数据值之后,如下所示:

cboDept.DataSource = dataTable;
cboDept.DisplayMember = "name";
cboDept.ValueMember = "dep";

// 设置label1显示对应的dep
lblDept.DataBindings.Add("Text", dataTable, "dep");

这样就可以避免集合中的两个绑定绑定到同一个属性的问题。

C# 代码优化:如何去除重复的 dep 值并解决绑定问题

原文地址: http://www.cveoy.top/t/topic/quuQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录