绑定Master-Detail 关系 数据也是数据显示的一种方式,此实例使用后台代码创建数据源并绑定到gridcontrol。

其实方式参见:点击打开链接

先看效果图(默认方式)

直接给出后台代码,主要使用的是dataset创建关系。

private void simpleButton1_Click(object sender, EventArgs e)
{
// 定义主表
DataTable masterTable = new DataTable("MasterTable");
DataColumn parentColumn = new DataColumn("masterId", typeof(int));
masterTable.Columns.Add(parentColumn);
masterTable.Columns.AddRange(new DataColumn[]{
new DataColumn("name",typeof(string)),
});
masterTable.Rows.Add(, "class1");
masterTable.Rows.Add(, "class2");
masterTable.Rows.Add(, "class3"); // 定义子表
DataTable detailTable = new DataTable("DetailTable");
DataColumn childrenColumn = new DataColumn("masterId", typeof(int));
detailTable.Columns.Add(childrenColumn); detailTable.Columns.AddRange(new DataColumn[] {
new DataColumn("id",typeof(int)),
new DataColumn("name",typeof(string)),
new DataColumn("age",typeof(string))
}); detailTable.Rows.Add(, , "student1", "age1");
detailTable.Rows.Add(, , "student2", "age2");
detailTable.Rows.Add(, , "student3", "age3");
detailTable.Rows.Add(, , "student4", "age4");
detailTable.Rows.Add(, , "student5", "age5");
detailTable.Rows.Add(, , "student6", "age6");
detailTable.Rows.Add(, , "student7", "age7");
detailTable.Rows.Add(, , "student8", "age8"); using (DataSet ds = new DataSet())
{
ds.Tables.AddRange(new DataTable[] { masterTable.Copy(), detailTable.Copy() });
// 创建表关系
DataRelation relation = new DataRelation("detailTable", ds.Tables[].Columns[], ds.Tables[].Columns[], false);
ds.Relations.Add(relation); // 添加
gridControl1.DataSource = ds.Tables[]; // 指定数据源
}
}
  1. 指定FileName: 设置gridview的Columns的各个列的FileName为dt的ColumnName也可以,这样就可以自定义GridColumn的Caption属性了。
  2. 使 用子gridView显示字表数据:以上创建的gridControl值包含一个默认的gridView,也就是mainView。默认情况 下,gridcontrol会根据mastertable的relation 来自动创建并显示detail的数据结构,那么如果想在detail中做些操作,比如 rowupdate结束是自动计算某个值。那就用到了Level Designer(参见:点击打开链接), 其名称与 我们创建dt之间的relation时所用到的name必须一致,如上的“detailTable"。创建一个新的gridview2,自定义列,并设定 fileName,出现的效果与 1 一致。在gridview2的RowUpdated事件中可以做任何的计算操作。例如,
  3.     DataRowView view = e.Row as DataRowView;
    view[] = Convert.ToInt32(view[]) + Convert.ToInt32(view[]);

    此更新会更新至dt,最终反映到gridview2上。

最新文章

  1. log4j分离日志输出 自定义过滤 自定义日志文件
  2. Scrapy创建zentao爬虫
  3. sqlite 数据类型
  4. python numpy包
  5. 分组函数 ----group by 使用总结
  6. 数据字典生成工具之旅(7):NVelocity实现代码生成器
  7. Python3 windows如何安装模块 setuptools
  8. java Map迭代
  9. 《算法设计手册》面试题解答 第五章:图的遍历 附:DFS应用之找挂接点
  10. eclipse 代码提示时闪退问题
  11. E2 2014.07.01 更新日志
  12. Redis多机功能总结
  13. 68.vivado与modelsim的关联以及器件库编译
  14. LeetCode Letter Combinations of a Phone Number 电话号码组合
  15. HDU 4726 Kia's Calculation (贪心算法)
  16. Nginx负载均衡的优缺点
  17. 19.java反射入门
  18. eclipse中设置python的版本
  19. HDU - 1160 FatMouse's Speed 动态规划LIS,路径还原与nlogn优化
  20. python 列表 list的基本操作

热门文章

  1. Django基于Pycharm开发之一【创建django工程】
  2. 在O(1)时间内删除链表结点 【微软面试100题 第六十题】
  3. ccna 闫辉单臂路由 和 acl access control list
  4. 使用 D8 分析 javascript 如何被 V8 引擎优化的
  5. 前面板插口耳机无声音?无Realtek控制器?
  6. js 抓取页面数据
  7. Spring @注解详解(转)
  8. 设计模式(二 & 三)工厂模式:3-抽象工厂模式
  9. UITabBarController支持旋转
  10. 【bzoj2563】阿狸和桃子的游戏 贪心