public struct MyItem
 {
     public int Data;     public string Text;     string ToString()
     {
          return Text;
     }
 }public List<MyItem> GetPartners(int companyID)
{
    List<MyItem> list = new List<MyItem>();
    using (SqlConnection conn = new SqlConnection(connstr))
    {
        SqlCommand cmd = new SqlCommand("proc_GetPartners", conn);
        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add("@ID", SqlDbType.Int).Value = companyID;
        conn.Open();
        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                MyItem m = new MyItem();
                m.Text = reader["Company"].ToString();
                m.Data = Convert.ToInt32(reader["id"]);
                list.Add(m);
            }
        }
    }
    return list;
}
foreach (MyItem m in list)
{
    cboFriendName.Items.Add(m);
}
ComboBox里面的加载出来的是 LogisticsAgencySystemModels.MyItem 这么东西我看百度知道里有人说 显示的时候会出现 ToString() 的值我怎么弄不出来啊?各位大哥教教!在线等...

解决方案 »

  1.   

    foreach (MyItem m in list)
    {
        cboFriendName.Items.Add(m.Text);
    }
      

  2.   

    while (reader.Read())
                {
                    MyItem m = new MyItem();
                    m.Text = reader["Company"].ToString();
                    m.Data = Convert.ToInt32(reader["id"]);
                    list.Add(m);
                }
    这样不就行了
    while (reader.Read())
                {
                    list.Add(reader["Company"].ToString();
                }
      

  3.   

    public struct MyItem
     {
         public int Data;     public string Text;     public override string ToString()
         {
              return Text;
         }
     }
      

  4.   

    cboFriendName.DataTextField = "Text";
    cboFriendName.DataValueField = "Data";要绑定如何显示
      

  5.   

    在cboF~ 里面 加事件,当它点击到某个Text的时候,可以让它自己的当关项变成data或者在其它控件中显示Data
      

  6.   


    各位,完全 理解错意思了.既然我要让cbo里面添加对象, 肯定是当用户选择某项后,我可以得到选中项的Data所以不要跟我说直接添加一个字符串进去.DisplayMember,ValueMember 不能对集合进行绑定 谢谢.
      

  7.   

    我7楼 手快 打错了.DisplayMember,ValueMember 不能对结构进行绑定.
      

  8.   

    foreach (MyItem m in list) { cboFriendName.Items.Add(m); }这里执行完后cboFriendName.DataTextField = "Text";
    cboFriendName.DataValueField = "Data";就OK
      

  9.   

    我认为
    foreach (MyItem m in list) { cboFriendName.Items.Add(m); }这方法可以不要了直接
    cboFriendName.DataSource=list;
    cboFriendName.DataTextField = "Text";
    cboFriendName.DataValueField = "Data";
    cboFriendName.DataBind();//若是WebForm
      

  10.   

    这么做是不行的,把结构改成类,再override tostring,如下:        public class MyItem
            {
                public int Data;            public string Text;            public override string ToString()
                {
                    return Text;
                }
            }
      

  11.   

    11楼同志 不知道为什么 我完全.不出你说那几个属性.
    12楼同志 如3楼同志所说,只需要加override 关键字即可.
      

  12.   

    ToString方法确是需要override的,搞了段时间WebForm,没注意你的是WinForm下的,抱歉.
      

  13.   


    WinForm下改成这样
    cboFriendName.DisplayMember = "Text";
    cboFriendName.ValueMember = "Data";