如何在组合框中显示 2 列? (多个值)

How can I show 2 columns in a combobox? (multiple values)

现在我有这个:

da = new SqlDataAdapter("SELECT * FROM LOGIN WHERE RECHTEN=2", conn);
dtt = new DataTable();
da.Fill(dtt);
for (int i = 0; i < dtt.Rows.Count; i++)
{
    txtKlantid.Items.Add(dtt.Rows[i]["klantId"]);
}

现在只显示klantId,但我还想显示名字。当我有那个时,所以 klantId 和名字我怎么能只 select klantId 当我说:

selectedUserId = combobox.Text;

编辑:

//这是我初始化组合框的地方

        da = new SqlDataAdapter("SELECT (kg.voornaam+' '+kg.achternaam + ' - ' + CONVERT(varchar,l.klantId)) AS dispValue FROM LOGIN l inner join klantGegevens kg on l.klantId=kg.klantid WHERE RECHTEN=2", conn);
        dtt = new DataTable();
        da.Fill(dtt);
        txtKlantid.DisplayMember = "dispValue";
        txtKlantid.ValueMember = "klantId";
        txtKlantid.DataSource = dtt;

//这是删除用户的按钮

  private void btnDeleteUser_Click(object sender, EventArgs e)
        {

            if (userInformation.addPersonsPermission)
            {
                int selectedUserId = Convert.ToInt32(((DataRowView)txtKlantid.SelectedValue)["klantId"]);
                if (users.deleteKlantAdmin(selectedUserId))
                {
                    MetroMessageBox.Show(this, "Gebruiker "+selectedUserId+" is verwijderd", "Verwijderd");
                }
                else
                {
                    MetroMessageBox.Show(this, "Er ging iets fout, contacteer de beheerder", "Fout");
                }

            }
            else
            {
                loginAddUser addUserLogin = new loginAddUser();
                addUserLogin.ShowDialog();
            }
        }

您可以使用 ComboBox

DisplayMemberValueMember 属性
da = new SqlDataAdapter("SELECT * FROM LOGIN WHERE RECHTEN=2", conn);
dtt = new DataTable();
da.Fill(dtt);

txtKlantid.DisplayMember = "Name"; //Name of field to display
txtKlantid.ValueMember = "klantId";
txtKlantid.DataSource = dtt;

您可以通过关注

获得NameId
var name = txtKlantid.Text;
var id = txtKlantid.SelectedValue;

根据您的要求,您可以组合 Id 和 Name

for (int i = 0; i < dtt.Rows.Count; i++)
{
    txtKlantid.Items.Add(dtt.Rows[i]["klantId"].ToString()+"-"+dtt.Rows[i]["Name"].ToString());
}
在这种情况下,

DisplayMemberValueMember 属性将成为您的朋友。

请避免选择 table 中的所有字段只是为了填充您的组合框。你可以做类似的事情,

da = new SqlDataAdapter("SELECT (name + ' - ' + CONVERT(varchar,klantId)) AS dispValue, klantId FROM LOGIN WHERE RECHTEN=2", conn);
dtt = new DataTable();
da.Fill(dtt);
txtKlantid.DisplayMember = "dispValue";
txtKlantid.ValueMember = "klantId";
txtKlantid.DataSource = dtt;

在此示例中,txtKlantid.SelectedValue 将为您提供 klantId 值,txtKlantid.Text 将为您提供 name - klantId 值。

希望这对您有所帮助...