国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

DataGridview綁定復(fù)雜對象

2019-11-17 03:19:23
字體:
供稿:網(wǎng)友

DataGridview綁定復(fù)雜對象

假設(shè)有一個(gè)類

class Person    {        PRivate string id;        private string name;        private Address homeAddr;        public string ID        {            get { return id; }            set { id = value; }        }        public string Name        {            get { return name; }            set { name = value; }        }        public Address HomeAddr        {            get { return homeAddr; }            set { homeAddr = value; }        }    }    class Address    {        private string cityname;        private string postcode;        public string CityName        {            get { return cityname; }            set { cityname = value; }        }        public string PostCode        {            get { return postcode; }            set { postcode = value; }        }    }

將類綁定到Datagridview

List<Person> lst = new List<Person>();            for (int i = 0; i < 10000; ++i)            {                lst.Add(new Person()                {                    ID = "1",                    Name = "name",                    HomeAddr = new Address() { CityName = “CityName”, PostCode = “PostCode ”}                });            }            dataGridView1.DataSource = lst;

image

其實(shí)值已經(jīng)有了,只是Datagridview不顯示。可以通過DataPropertyName指定子屬性名字,在CellFormatting事件中通過反射獲取。

image

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)        {            if ((dataGridView1.Rows[e.RowIndex].DataBoundItem != null) &&                (dataGridView1.Columns[e.ColumnIndex].DataPropertyName.Contains(".")))            {                string[] names = dataGridView1.Columns[e.ColumnIndex].DataPropertyName.Split('.');                object obj = dataGridView1.Rows[e.RowIndex].DataBoundItem;                for (int i = 0; i < names.Count(); ++i)                {                    try                    {                        var result = obj.GetType().GetProperty(names[i]).GetValue(obj, null);                        obj = result;                        e.Value = result.ToString();                    }                    catch (Exception)                    {                        return;                        throw;                    }                }            }        }

結(jié)果發(fā)現(xiàn)Datagridview列多了

image

可以指定dataGridView1的AutoGenerateColumns屬性為false,讓datagridview不自動生成列。(要在綁定前指定)

 


  • 如果字屬性只有一個(gè)屬性要顯示,可以直接override字屬性的ToString方法。
  • msdn上有人用特性實(shí)現(xiàn),不過我試了下貌似不行。http://blogs.msdn.com/b/msdnts/archive/2007/01/19/how-to-bind-a-datagridview-column-to-a-second-level-property-of-a-data-source.aspx

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 麻栗坡县| 屏东市| 桦甸市| 宜昌市| 呼图壁县| 开鲁县| 读书| 梁河县| 邵东县| 麟游县| 固安县| 永胜县| 康马县| 滦南县| 宿迁市| 县级市| 屏边| 焦作市| 芜湖市| 行唐县| 辉县市| 胶州市| 吴旗县| 黔西县| 英吉沙县| 肇州县| 毕节市| 沧州市| 皮山县| 鄂托克旗| 建瓯市| 托克逊县| 虎林市| 冕宁县| 龙陵县| 吉木萨尔县| 铁力市| 策勒县| 永兴县| 莱芜市| 呼图壁县|