Подтвердить что ты не робот

Как добавить два значения поля в элементе отображения combobox в С#

В моей таблице у меня есть поле firstname и lastname, теперь я хочу установить firstname и lastname как displaymember в выпадающем списке, но я не знаю, как сделайте это.

Что-то вроде этого

cmbEmployees.DataSource = GetEmployees();
//something like below line which doesn't work
cmbEmployees.DisplayMember = "lastname, first_name";     
cmbEmployees.ValueMember = "id";

Как я могу это достичь? Чтобы как lastname, так и firstname отображались в combobox

4b9b3361

Ответ 1

Скажем, у вас был класс вроде этого:

class Person
{
    public string FirstName
    {
        get;
        set;
    }

    public string LastName
    {
        get;
        set;
    }

    public string FullName
    {
        get
        {
            return LastName + ", " + FirstName;
        }
    }

    public Person(string firstname, string lastname)
    {
        FirstName = firstname;
        LastName = lastname;
    }
}

Если у вас нет свойства FullName, просто создайте его в формате, который вы хотите отобразить. Затем установите DisplayMember равным FullName.

Ответ 2

В этом примере вам будет показано, как это сделать без изменения базового класса.

Во-первых, вы можете оставить свой DisplayMember одним свойством, скажем:

cmbEmployees.DisplayMember = "lastname";

Теперь перейдите в свою форму в режиме [Дизайн] щелкните правой кнопкой мыши на ComboBox → Свойства.

В верхней части окна "Свойства" нажмите "События" (значок молнии),

найдите формат в списке событий ниже (в разделе "Свойство изменено" ) и введите там какое-либо имя события, скажем: ComboBoxFormat и нажмите Enter. Вы увидите следующее:

private void ComboBoxFormat(object sender, ListControlConvertEventArgs e)
{

}

И теперь напишите следующие строки внутри:

private void ComboBoxFormat(object sender, ListControlConvertEventArgs e)
{
    // Assuming your class called Employee , and Firstname & Lastname are the fields
    string lastname = ((Employee)e.ListItem).Firstname;
    string firstname = ((Employee)e.ListItem).Lastname;
    e.Value = lastname + " " + firstname;
}

Что это;)

Ответ 3

Ваш запрос должен быть таким, как в функции GetEmployees().

"SELECT id,(lastname + ' ' + first_name) AS NAME FROM TABLE"

cmbEmployees.DataSource = GetEmployees();
cmbEmployees.DisplayMember = "NAME"; 
cmbEmployees.ValueMember = "id";

Ответ 4

в С# 6 создать свойство readonly в вашем классе Employee

public string FullName=>$"{lastname} {firstname}";

то

cmbEmployees.DataSource = GetEmployees();
//something like below line which doesn't work
cmbEmployees.DisplayMember = "FullName";     
cmbEmployees.ValueMember = "id";

Ответ 6

СОЗДАТЬ ПРОСМОТР [dbo]. [Get_view] КАК ВЫБРАТЬ CONCAT (sell_tb.Name, extra_tb.Name, purchase_tb.Name) AS Имя FROM sell_tb FULL JOIN extra_tb ON extra_tb.E_ID = sell_tb.E_ID ПОЛНАЯ ПОДКЛЮЧЕНИЕ buy_tb ON_ID__D_DB_ID_DIB__D_ID_DB_ID_DIB__D_D_ID_BD_ID_DIB__D_D_ID_DB_ID_DIB__D_ID_TB_ID_DIB__D_T_B_ID_DIB_ID_DIB__Подачи_ покупки_tb.tb. S_ID;

      private void alldata1()
    {
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "select * from [get_view]";
        cmd.ExecuteNonQuery();
        DataTable dt = new DataTable();
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        sda.Fill(dt);
        comboBox1.DataSource = dt;
        comboBox1.DisplayMember = "Name";
        conn.Close();
    }

Ответ 7

Вы можете использовать это, если не хотите создавать новую переменную;

        foreach (var item in output.Employees)
        {
            comboBoxEmployees.Items.Add(item);
            item.FirstName = item.FirstName + " " + (String.IsNullOrEmpty(item.MiddleName) ? String.Empty : item.MiddleName + " ") + item.Surname;
        }

        comboBoxEmployees.ValueMember = "ID";
        comboBoxEmployees.DisplayMember = "FirstName";