在C# Winform中 我定义了一个实体 格式如下:
 public class User
    {
        string _UserName, _Pass;
        IList<string> _Other = new List<string>();
        public string UserName
        {
            get { return _UserName; }
            set { _UserName = value; }
        }
        public string Pass
        {
            get { return _Pass; }
            set { _Pass = value; }
        }
        public IList<string> Other
        {
            get { return _Other; }
            set { _Other = value; }
        }
    }假设Other中有两个值 "男" "1985-1-1"现在我要把它邦定到DataGridView上并添加UserName、Password、Sex、Brithday列,UserName和Password列DataPropertyName分别为UserName和Password Sex我设置了Other["Sex"] 结果Sex和Brithday两列都没有显示 请问我怎么设置呢?

解决方案 »

  1.   

    可能我描述的有问题 其实就是数据源中有一个IList的属性,里边放着一个数据集合 我要在邦定的时候分别取出来帮在DataGridView上
      

  2.   

    =========================
     看看 我的 ..我不想多说了
    ===
      ==============================================================================
          private List<Gro> groceryList = new List<Gro>();
            private void frmMain_Load(object sender, EventArgs e)
            {
                Gro[] items = new Gro[]{
                    new Gro("Yogurt",Convert.ToDecimal(2.95)),
                    new Gro("Carrots",Convert.ToDecimal(1.55)),
                    new Gro("Celery",Convert.ToDecimal(0.99)),
                    new Gro("Rice",Convert.ToDecimal(5.39)),
                    new Gro("Bread",Convert.ToDecimal(3.95)),
                    new Gro("Milk",Convert.ToDecimal(3.95)),
                    new Gro("Soda",Convert.ToDecimal(1.99)),
                    new Gro("Cheese",Convert.ToDecimal(5.99)),
                    new Gro("Paper Towels",Convert.ToDecimal(4.55))
                };            groceryList.AddRange(items);            UpdateGrid(groceryList);
            }
            private void UpdateGrid(List<Gro> list)
            {
                int c=1;
                decimal total=0;
                dataGridView1.Rows.Clear();
                list.ForEach(delegate(Gro item)
                {
                    dataGridView1.Rows.Add(new object[] { c++, item.ITEM, String.Format("{0:c}",item.PRICE)});
                    total += item.PRICE;
                });
                lblTotal.Text = String.Format("{0:c}",total);          
            }
    ==
            class Gro
        {
            private string _item = null;
            private decimal _price = 0;        public Gro(){}
            public Gro(string item, decimal price)
            {
                _item = item;
                _price = price;
            }        public string ITEM
            {
                get { return this._item; }
            }        public decimal PRICE
            {
                get { return this._price; }
            }
        }
      

  3.   

    ((IList<string>)Eval("Other"))[0]
    ((IList)Eval("Other"))[0]
    看看这样行不行
    或者你在建个datatable
    把属性和Other拿出来当作列
    然后把datatable绑定到datagrid
      

  4.   

    你这里 IList<string> _Other = new List<string>();泛型里面不该是标准 string 类型, 更应该象个 自定义类型:public class SexAndBirthday
    {
         public string Sex;
         public string Birthday;
         ...
    }
      

  5.   

    先建一个datatable把这些列都添加上然后给巴list 的值取出来付给DT再给gridview绑定就好了阿?
      

  6.   

    或者再加个属性了,绑定的时候取出Ilist中值 给这个属性
      

  7.   

    如果用Eval不行的话
    那就只能重新创建一个DataTable
    根据Other去动态的创建列,在和原来的正常属性一起绑定到DataGrid
      

  8.   

    Web里边是可以用<%#DataBinder.Eval(Container.DataItem, "Other[Sex]")%>的
      

  9.   

    难道就没有办法?按理说Web能做到 Winform应该也能做啊
      

  10.   

    IList<string> _Other = new List<string>(); 
    2个尖括号代表什么?这是什么方法?
      

  11.   

    你实体类里没有sex,你叫人家怎样去哪里sex啊?
      

  12.   

    对lz的想法,只能说想象力比较好。
    可以采用的方法,再建2个属性Sex和Birthday:
    public class User
        {
            string _UserName, _Pass;
            IList<string> _Other = new List<string>();
            public string UserName
            {
                get { return _UserName; }
                set { _UserName = value; }
            }
            public string Pass
            {
                get { return _Pass; }
                set { _Pass = value; }
            }
            public IList<string> Other
            {
                get { return _Other; }
                set { _Other = value; }
            }
            public string Sex{
                get { return Other[0];}
                set { Other[0] = value;}
            }
            public string Birthday{
                get { return Other[1];}
                set { Other[1] = value;}
            }
        }我还想问一下,lz说的webform下能做到是怎么做到的?