首先,这是一个员工轮班日志应用程序。
员工登录并选择他们将要操作的机器。通常这是两台机器,但是如果有人不露面,他们可能最多登录4台。
我有一个WinForm
,它有一个ComboBox
绑定到Shift_Log
表中的一个字段。
我的问题是组合框绑定到Shiftlog_ID字段,并显示operator_id而不是运算符名称。下拉列表显示员工姓名,但是一旦选中,它就会显示ID。我需要它来始终显示员工的姓名。
我认为我期望很高。我是否需要取消组合并在cmbOperator_SelectedValueChange_Changed事件中编写代码以将ID存储到shiftlog字段。然后,我将不得不将代码放入表单加载中,以根据记录中存储的ID显示当前员工的姓名。
我在VB.Net
中做了很多工作,这是我的第一个C#
项目。没想到会那么难。绝对是学习曲线。如果有人能指出正确的方向,我将不胜感激。
谢谢。
答案 0 :(得分:0)
我尝试了几种不同的方法来填充组合框。首先是通过使用智能标记。选择员工表作为源,选择“名称”作为显示,选择“姓名缩写”作为值。我认为也许“选定值”将是字段“选定值”也将被存储的原因。其次,我尝试了代码。
private void fillcmbOperator()
{
using (SqlConnection conn = new SqlConnection(Properties.Settings.Default.LazerMaintenance_Conn))
{
try
{
string query = "SELECT Operators.Initials, Operators.Name " +
"FROM Operators WHERE Operators.Active_Ind = 'True'";
SqlDataAdapter da = new SqlDataAdapter(query, conn);
conn.Open();
DataSet ds = new DataSet();
da.Fill(ds, "dsOperators");
cmbOperator.ValueMember = "Initials";
cmbOperator.DisplayMember = "Name";
cmbOperator.DataSource = ds.Tables["dsOperators"];
conn.Close();
}
catch (Exception ex)
{
// write exception info to log or anything else
MessageBox.Show("Error occured! : " + ex);
}
}
}
顺便说一句,DGV上的打印机选择效果很好。我通过“集合”“编辑列”弹出窗口完全设置了它。
答案 1 :(得分:0)
似乎当我将字段从“数据源”选项卡拖放到屏幕上时,IDE向文本值添加了绑定。然后,当我通过控件智能标记更新组合框时,它添加了第二个绑定。一位同事注意到,删除与文本值的第一个绑定后,我便有了两个绑定。顺便说一句,为了使其能够在第一条记录上工作,我已将绑定移至FormLoad。现在,它显示操作员名称并保存ID,并且在记录之间导航时不会出现错误。感谢您的输入。
cmbOperator.DataBindings.Add(new Binding(“ SelectedValue”,this.shift_LogBindingSource,“ Operator”,true));