当前位置: 首页 > 编程日记 > 正文

父子表关联在窗体中的绑定显示和浏览

     private BindingManagerBase bm1 = null;
private BindingManagerBase bm2 = null;

private void DataScanInForm2_Load(object sender, EventArgs e)
{
string sqlString1 = "select * from 客户";
string sqlString2 = "select * from 订单";
string[] sqlStrings = new string[] { sqlString1, sqlString2 };
string[] tableNames = new string[] { "客户", "订单" };

DataSet ds = new DataSet();
ds = Rabbit.DBUtility.DBHelperOLEDB.Query(sqlStrings, tableNames);

DataColumn parentColumn = new DataColumn();
DataColumn childColumn = new DataColumn();
parentColumn = ds.Tables["客户"].Columns["ID"];
childColumn = ds.Tables["订单"].Columns["客户 ID"];

DataRelation relation = new DataRelation("每一位客户的订单", parentColumn, childColumn);
ds.Relations.Add(relation);

//绑定
txtCID.DataBindings.Add("text", ds, "客户.ID");
txtCCompany.DataBindings.Add("text", ds, "客户.公司");
txtCFamliyName.DataBindings.Add("text", ds, "客户.姓氏");
txtCHomepage.DataBindings.Add("text", ds, "客户.主页");

txtOID.DataBindings.Add("text", ds, "客户.每一位客户的订单.订单 ID");
dtpODate.DataBindings.Add("value", ds, "客户.每一位客户的订单.订单日期");
txtOName.DataBindings.Add("text", ds, "客户.每一位客户的订单.发货名称");
txtOCity.DataBindings.Add("text", ds, "客户.每一位客户的订单.发货城市");
nudOCost.DataBindings.Add("value", ds, "客户.每一位客户的订单.运费");

Binding bTax = new Binding("text", ds, "客户.每一位客户的订单.税款");
bTax.Format += new ConvertEventHandler(bTax_Format);txtOTax.DataBindings.Add(bTax);


bm1 = this.BindingContext[ds, "客户"];
bm2 = this.BindingContext[ds, "客户.每一位客户的订单"];
bm1.PositionChanged += new EventHandler(bm1_PositionChanged);
bm2.PositionChanged += new EventHandler(bm2_PositionChanged);
this.bm1_PositionChanged(null, new EventArgs());
this.bm2_PositionChanged(null, new EventArgs());
}

private void bTax_Format(object sender, ConvertEventArgs e)
{
e.Value = string.Format("{0:c3}", (decimal)e.Value);
}

private void bm1_PositionChanged(object sender, EventArgs e)
{
textBox1.Text = string.Format("当前位置:{0},共计:{1}", bm1.Position + 1, bm1.Count);
this.bm2_PositionChanged(null, new EventArgs());
}

private void bm2_PositionChanged(object sender, EventArgs e)
{
//当bm1.Position改变时,先执行bm2.Position的PositionChanged事件,
//再执行bm1.Position的PositionChanged事件。而在执行bm2.Position的
//PositionChanged事件之前,bm2.Position已经指向了bm1.Position所指向
//记录的第一个子记录,即bm2.Position=0;如果没有子记录,则bm2.Position=-1

textBox2.Text = string.Format("当前位置:{0},共计:{1}", bm2.Position + 1, bm2.Count);
}

private void btnCBack_Click(object sender, EventArgs e)
{
if (bm1.Position > 0)
{
bm1.Position -= 1;
}
}

private void btnCNext_Click(object sender, EventArgs e)
{
if (bm1.Position < bm1.Count - 1)
{
bm1.Position += 1;
}
}

private void btnCFirst_Click(object sender, EventArgs e)
{
bm1.Position = 0;
}

private void btnCLast_Click(object sender, EventArgs e)
{
bm1.Position = bm1.Count - 1;
}

private void btnOBack_Click(object sender, EventArgs e)
{
if (bm2.Position > 0)
{
bm2.Position -= 1;
}
}

private void btnONext_Click(object sender, EventArgs e)
{
if (bm2.Position < bm2.Count - 1)
       {
          //当下一记录的数据无法通过与之绑定的控件的有效性检验时,//将会导致指向下一记录失败,即下式计算失败,bm2.Position保持不变//例如,图中有一个显示运费的NumericUpDown控件,如果下一记录的运费//为300,而该控件的MaxValue属性值为200,则将会导致指向失败
                bm2.Position += 1;
}
}

private void btnOFirst_Click(object sender, EventArgs e)
{
bm2.Position = 0;
}

private void btnOLast_Click(object sender, EventArgs e)
{
bm2.Position = bm2.Count - 1;
}

转载于:https://www.cnblogs.com/2008freestyle/archive/2012/03/19/2406063.html

相关文章:

【Excel】使用Excel函数计算二项分布泊松分布概率

例&#xff1a; 计算如下参数的二项分布和泊松分布 二项分布 1、选中单元框&#xff0c;添加函数 2、选中统计类函数 3、选择二项分布概率函数 4、输入相应的参数 注&#xff1a; &#xff08;1&#xff09;在输入参数时点击相应的单元格即可 &#xff08;2&#xff09;最后…

万能android调用webservice方法——参数类型不受限制

说明&#xff1a;只是个例子&#xff0c;扩展性、复用性不好&#xff0c;只是提出一个思路&#xff0c;返回的XML解析代码写的也很烂聪明的你&#xff0c;拿来代码的时候&#xff0c;肯定能解决这些问题关键代码&#xff1a; try{//发帖机原理&#xff0c;模拟浏览器finalStrin…

Vue轮播图插件---Vue-Awesome-Swiper

轮播图插件 Vue-Awesome-Swiper 地址&#xff1a;https://github.com/surmon-china/vue-awesome-swiper 安装&#xff1a;npm install vue-awesome-swiper --save 局部引入&#xff1a;import swiper/dist/css/swiper.cssimport { swiper, swiperSlide } from vue-awesome-swip…

linux下遇到的小问题与解决方法

Linux下执行.sh脚本错误&#xff1a;bin/sh^M: bad interpreter: No such file or directory 原因是.sh脚本在windows系统下用记事本文件编写的。不同系统的编码格式引起的。 转行文件的编码格式&#xff1a; 1、确保用户对文件有读写及执行权限 oraclelinux-106:~/RMAN/bin&g…

阶段1 语言基础+高级_1-3-Java语言高级_04-集合_05 List集合_1_List集合_介绍常用方法...

有序的&#xff0c;还包含索引&#xff0c;允许有重复的值、 add 打印出来的不是地址&#xff0c;说明重写了toString的方法 remove方法 返回的是被移除的元素 set方法 get 索引越界异常 几种越界的异常转载于:https://www.cnblogs.com/wangjunwei/p/11237813.html

【蓝桥java】进制与整除之天平秤重

题目&#xff1a; 用天平称重时&#xff0c;我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码&#xff0c;重量分别是1&#xff0c;3&#xff0c;9&#xff0c;27&#xff0c;81 则它们可以组合称出1到121之间任意整数重量&#xff08;砝码允许放在左右两个盘…

分享一个C#使用AT指令控制语音猫的例子

阅读全文&#xff1a;http://www.cckan.net/forum.php?modviewthread&tid61 先来说说 最近公司让开发一个语音猫充值的软件&#xff0c;就是拨打10086&#xff08;虚拟&#xff09;进行话费充值操作&#xff0c;虚拟流程如下&#xff1b; 1.先拨通10086 2.按1进行话费充值…

个人银行账户管理程序

这个程序是一个银行账户管理的程序&#xff0c;是用C来实现程序功能的&#xff0c;该程序包含六个文件&#xff0c;其中有date.h头文件 是日期类的头文件&#xff0c;date.cpp是日期类的实现文件&#xff0c;accumulator.h是按日将数值累加的accumulator类的头文件&#xff0c;…

两个关于水花的测试。

海面上的水花的特效&#xff0c;水花是在浪尖处发射出来的&#xff0c;目前还没有让发射参数自动化的方法&#xff0c;都是表达式。一旦改变浪的性质&#xff0c;发射的粒子就要重新写动态了。 Splash on the ocean emitted from the crisp faces on top of the wave, the whit…

泛型在三层中的应用

一说到三层架构&#xff0c;我想大家都了解&#xff0c;这里就简单说下&#xff0c;三层架构一般包含&#xff1a;UI层、DAL层、BLL层&#xff0c;其中每层由Model实体类来传递&#xff0c;所以Model也算是三层架构之一了&#xff0c;例外为了数据库的迁移或者更OO点&#xff0…

【蓝桥java】进制与整除之尼姆堆

题目&#xff1a; 有3堆硬币&#xff0c;分别是3,4,5 二人轮流取硬币。 每人每次只能从某一堆上取任意数量。 不能弃权。 取到最后一枚硬币的为赢家。 求先取硬币一方有无必胜的招法。 在提供代买前做几条补充&#xff1a; &#xff08;1&#xff09;这里有一个不是很好理解的…

RSA遭骇 Token 换?不换?

RSA SecurID Token召回更换的动作仍然持续进行中&#xff0c;根据外电报导&#xff0c;美国有些企业已经要求更换Token&#xff0c;如花旗集团、美国银行、富国银行、摩根大通、澳盛银行、澳洲西太平洋银行。于此同时&#xff0c;一些竞争供应商也动作频频&#xff0c;例如Safe…

二叉树的镜像(数组,前后 遍历重建二叉树)

题目描述 操作给定的二叉树&#xff0c;将其变换为源二叉树的镜像。输入描述: 二叉树的镜像定义&#xff1a;源二叉树 8/ \6 10/ \ / \ 5 7 9 11镜像二叉树8/ \10 6/ \ / \11 9 7 5 #include <iostream> #include <cstdio> #include <cstdlib> #in…

tp5实现Redis的简单使用

方法1&#xff1a; Controller <?php namespace app\index\controller;use think\Controller; use think\session\driver\Redis;class Index extends Controller {public function index(){$redis new Redis();if(!$redis->has(str)){var_dump($redis->set(str,this…

Linux下getsockopt/setsockopt 函数说明

【getsockopt/setsockopt系统调用】 功能描述&#xff1a; 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中&#xff0c;它们总会出现在最上面的套接字层。当操作套接字选项时&#xff0c;选项位于的层和选项的名称必须给出。为了操作套接字层的选项…

【蓝桥java】进制与整除之最大公约数 最小公倍数

补充&#xff1a; &#xff08;1&#xff09;欧几里得定理&#xff08;辗转相除法&#xff09;&#xff1a;A和B的最大公约数 B和A%B 的最大公约数 &#xff08;2&#xff09;将两个数乘起来再除以最大公约数就是最小公倍数 package cn.zzunit.jnvi;/***寻找最大公约数* autho…

学习C#要养成的好习惯

1. 避免将多个类放在一个文件里面。2. 一个文件应该只有一个命名空间&#xff0c;避免将多个命名空间放在同一个文件里面。3. 一个文件最好不要超过500行的代码&#xff08;不包括机器产生的代码&#xff09;。4. 一个方法的代码长度最好不要超过25行。5. 避免方法中有超过5个参…

3.1、final、finally、 finalize

final 可以用来修饰类、方法、变量&#xff0c;分别有不同的意义&#xff0c;final 修饰的 class 代表不可以继承扩展&#xff0c;final 的变量是不可以修改的&#xff0c;而 final 的方法也是不可以重写的&#xff08;override&#xff09;。 finally 则是 Java 保证重点代码一…

Android模拟器学framework和driver之传感器篇1(linux sensor driver)

对于android模拟器开发环境的搭建这里我就不多说了&#xff0c;网上google下一大堆&#xff0c;还有就是android 模拟器的kernel使用的是goldfish的kernel&#xff0c;可以使用git得到源码&#xff0c;然后就可以编译了&#xff0c;大家还是可以参考罗老师的博客。。。 在这里我…

【java】Lombok的使用

介绍&#xff1a;lombok在编译entity文件时自动生成get set toString hashCode等方法&#xff0c;这样方法生成就不用写在代码里了&#xff0c;可以简化代码。 使用方法&#xff1a; 一、在pom文件里引入lombok的依赖 代码实现&#xff1a; <dependency><groupId&g…

自己开发开源jquery插件--给jquery.treeview加上checkbox

很多时候需要把树状的数据显示除来&#xff0c;比如分类&#xff0c;中国省份、城市信息&#xff0c;等&#xff0c;因此这方面的javascript插件也有很多.比如性能优异的jquery.treeview和国人开发的功能强大的zTree. 我最近在一个项目中用到了jquery.treeview&#xff0c;但是…

SQL Server 2000安装时不出现安装界面,进程中存在解决

在XP和Server 2003系统中安装SQL Server 2000过程中&#xff0c;点击安装后&#xff0c;一直不出现安装界面&#xff0c;查看进程中也有&#xff0c;一直无反应。 解决办法&#xff1a; 首先重新启动机器&#xff0c;或者任务管理器里面结束2个sql进程 1. 在 SQLServer 安装向导…

Apache2.4部署python3.6+django2.0项目

一、安装apache Apache是非常有名的web服务器软件&#xff0c;如果想让我们web项目运行几乎离不开它。 Apache官方网站&#xff1a;http://httpd.apache.org/ 根据自己的环境&#xff0c;选择相应的版本进行下载。apache 官网没有windows 64位版本&#xff0c;可以通过下面的链…

我是如何有效的避免测试漏测?

漏测&#xff0c;指在产品缺陷在测试过程中没有被发现&#xff08;尤其是测试环境可以重现的缺陷&#xff09;&#xff0c;而是在版本发布后或者在用户使用后发现并反馈回来的缺陷。可以说&#xff0c;漏测的问题是测试管理者最头痛的问题。因为出现漏测&#xff0c;一来给客户…

总结是学习最好的方式(转)

总结是学习最好的方式 最近一直想总结来华为公司这3个多月自己有什么收获&#xff0c;但又想不明白自己收获了什么&#xff1f;说技术吧&#xff0c;也谈不上有多大的提高&#xff1b;说人际交流&#xff0c;也许还有些退步&#xff1b;说薪资存款吧&#xff0c;哎不谈了。想着…

【转载】JUnit各个注解的含义

转自&#xff1a;https://blog.csdn.net/weixin_38500014/article/details/84393775

silverlight、wpf中 dispatcher和timer区别

相同点&#xff1a;都是定时执行任务的计时器&#xff0c;都可以使用。 不同点&#xff1a;Timer运行在非UI 线程&#xff0c;如果Timer需要更新UI的时候&#xff0c;需要调用 Invoke或者 BeginInvoke DispatcherTimer运行在UI 线程&#xff0c;处理的 Dispatcher 队列中的计时…

web开发基础

web开发:所谓web开发就是基于浏览器服务器的开发下面将web开发基础知识作个总结:1.http协议:是建立在TCP协议上的,基于请求响应的模型2.http请求:面试题:说说get与post的区别a.传递数据量:get只能传递1kb以下的数据,post可以传递大数据b.安全性:get请求,如果携带参数,参数会直接…

让ubuntu下的eclipse支持GBK编码

原创作品&#xff0c;允许转载&#xff0c;转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://leaze.blog.51cto.com/83088/195584今天&#xff0c;把windows下的工程导入到了Linux下eclipse中&#xff0c;由于以前的工程代码&#x…

Session,ViewState用法

Session,ViewState用法基本理论&#xff1a; session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到vi…