17

私のテーブルには、とのフィールドがfirstnameあります。コンボボックスのように設定しlastnameたいのですが、その方法がわかりません。firstnamelastnamedisplaymember

このようなもの

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

どうすればこれを達成できますか?lastnameとの両方firstnameがに表示されるようにcombobox

4

8 に答える 8

60

この例では、基本クラスを変更せずにそれを行う方法を説明します。

まず、DisplayMemberに1つのプロパティを残すことができます。たとえば、次のようにします。

cmbEmployees.DisplayMember = "lastname";

次に、[デザイン]モードでフォームに移動し、[コンボボックス]->[プロパティ]を右クリックします。

[プロパティ]ウィンドウの上部にある[イベント](稲妻アイコン)をクリックし、

以下のイベントリスト([プロパティの変更]の下)で[形式]を探し、そこにイベント名を入力します。たとえば、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;
}

それでおしまい ;)

于 2013-09-15T20:49:16.840 に答える
28

次のようなクラスがあったとしましょう。

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ます。

于 2013-02-04T01:36:12.703 に答える
19

GetEmployees()関数でのクエリは次のようになります。

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

cmbEmployees.DataSource = GetEmployees();
cmbEmployees.DisplayMember = "NAME"; 
cmbEmployees.ValueMember = "id";
于 2013-02-04T06:51:22.613 に答える
3

C#6では、Employeeクラスに読み取り専用プロパティを作成します

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

それから

cmbEmployees.DataSource = GetEmployees();
//something like below line which doesn't work
cmbEmployees.DisplayMember = "FullName";     
cmbEmployees.ValueMember = "id";
于 2016-10-24T22:29:10.067 に答える
2

これらのアプローチの1つを試してください。

于 2013-02-04T01:36:24.153 に答える
0

CREATEVIEW[dbo]。[get_view]ASSELECT CONCAT(sell_tb.Name、extra_tb.Name、purchase_tb.Name)AS Name FROM Sell_tb FULL JOIN extra_tb ON extra_tb.E_ID = Sell_tb.E_ID FULL JOIN Purchase_tb ON Purchase_tb.S_ID = 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();
    }
于 2019-02-28T20:45:53.197 に答える
0
// Declare a class
private class ComboRec
   {
     public string ID { get; set; }
     public string FirstName { get; set; }
     public string LastName { get; set; }
     public string FullName { get; set; }
     public string Department { get; set; }
   }

   

    // Fill the Combo Items
    private void FillMyComboList()
            {
                EmployeesCombo.Items.Clear();
                EmployeesCombo.ValueMember = "ID";
                EmployeesCombo.DisplayMember = "FullName";
    
                MySqlCommand cmd = new MySqlCommand("select id, firstname, lastname, department from employees order by lastname, firstname", MyConnection);
                cmd.Transaction = myTransaction;
                MySqlDataReader rdr = cmd.ExecuteReader();
    
                ComboRec comborec;
    
                while (rdr.Read())
                {
                    comborec = new ComboRec();
                    comborec.ID = rdr["id"].ToString();
                    comborec.FirstName = rdr["firstname"].ToString();
                    comborec.LastName = rdr["lastname"].ToString();
                    comborec.FullName = rdr["lastname"].ToString() + ", " + rdr["firstname"].ToString();
                    comborec.Department = rdr["department"].ToString();
    
                    EmployeesCombo.Items.Add(comborec);
                }
    
                rdr.Close();
            }   
       
       
    // Get the values from combo
    string id = ((ComboRec)EmployeesCombo.SelectedItem).ID);
    string firstname = ((ComboRec)EmployeesCombo.SelectedItem).FirstName);
    string lastname = ((ComboRec)EmployeesCombo.SelectedItem).LastName);
    string fullname = ((ComboRec)EmployeesCombo.SelectedItem).FullName);
    string department = ((ComboRec)EmployeesCombo.SelectedItem).Department);
于 2020-12-17T14:00:01.067 に答える
0
    public void alldata1()
    {
        var Person= context.Person.Select(s => new { 
            display = s.surName+" "+s.name,
            value = s.studentID
        });
        comboBoxStudentNom.DataSource = Person.ToList();
        comboBoxStudentNom.ValueMember = "value";
        comboBoxStudentNom.DisplayMember = "display";
    }
于 2021-10-14T09:41:39.360 に答える