日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

發布時間:2023/11/27 生活经验 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 父子表关联在窗体中的绑定显示和浏览 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

     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

總結

以上是生活随笔為你收集整理的父子表关联在窗体中的绑定显示和浏览的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。