zoukankan      html  css  js  c++  java
  • 父子表关联在窗体中的绑定显示和浏览

         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;
    }

  • 相关阅读:
    软件工程导论P53,习题2.4
    视图和数据表的区别
    无法从“object”转换为“string”
    Oracle 密码重置
    Struts2 上传下载
    Spring 事务管理
    JSP 指令和动作
    JS 禁用回车、后退事件、form 表单不可编辑
    关于 in 和 exist 的理解
    Oracle clob 操作函数
  • 原文地址:https://www.cnblogs.com/2008freestyle/p/2406063.html
Copyright © 2011-2022 走看看