有一种需求场景在很多地方都会用到,就是父子关系(头表和子表的关系),比如订单和订单明细。
做过winform的朋友第spread控件应该比较熟悉,或者了解。他的展示方式就通过一个关联关系就可以了,下面是关键代码:
1 private void Form1_Load(object sender, EventArgs e) 2 { 3 DataSet ds = new DataSet(); 4 5 var dtParent = ds.Tables.Add("SAMPLE"); 6 dtParent.Columns.AddRange(new DataColumn[] { new DataColumn("Column1", typeof(string)) {Caption = "父节点"}, new DataColumn("Column2", typeof(int)) }); 7 dtParent.Rows.Add(new object[] { "Parent1", 0 }); 8 dtParent.Rows.Add(new object[] { "Parent2", 1 }); 9 10 var dtChild = ds.Tables.Add("Child1"); 11 dtChild.Columns.AddRange(new DataColumn[] {new DataColumn("Column1", typeof(string)) {Caption = "子节点"}, new DataColumn("Column2", typeof(int))}); 12 dtChild.Rows.Add(new object[] { "Child1-1", 0 }); 13 dtChild.Rows.Add(new object[] { "Child1-2", 0 }); 14 dtChild.Rows.Add(new object[] { "Child1-3", 0 }); 15 dtChild.Rows.Add(new object[] { "Child2-1", 1 }); 16 dtChild.Rows.Add(new object[] { "Child2-2", 1 }); 17 dtChild.Rows.Add(new object[] { "Child2-3", 1 }); 18 19 ds.Relations.Add("Relation1", dtParent.Columns["Column2"], dtChild.Columns["Column2"]); 20 21 fpSpread1.ActiveSheet.DataSource = ds; 22 23 fpSpread1_Sheet1.Columns[1].Visible = false; 24 for (int i = 0; i < fpSpread1_Sheet1.Rows.Count; i++) 25 { 26 fpSpread1_Sheet1.GetChildView(i, 0).Columns[1].Visible = false; 27 } 28 }