首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 資料庫基礎程式設計(二):BindingManagerBase 導航資料列完整實作

     編輯:關於C語言

核心概念:BindingManagerBase 與 Position 屬性

所有繫結同一資料來源的控制項,共享一個 BindingManagerBase (透過 Form.BindingContext[dataSource, dataMember] 取得)。改變其 Position 即可同步移動所有繫結控制項的顯示列。

建立 BindingManagerBase:Access 2000 範例


string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb";
OleDbConnection conn = new OleDbConnection(connStr);
string sql = "SELECT * FROM person";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
da.Fill(ds, "person");
conn.Close();
myBind = this.BindingContext[ds, "person"]; // 關鍵:取得繫結管理器

建立 BindingManagerBase:SQL Server 2000 範例


string connStr = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=data1;Data Source=server1";
OleDbConnection conn = new OleDbConnection(connStr);
conn.Open();
string sql = "SELECT * FROM person";
DataSet ds = new DataSet();
OleDbDataAdapter da = new OleDbDataAdapter(sql, conn);
da.Fill(ds, "person");
conn.Close();
myBind = this.BindingContext[ds, "person"];

四大導航按鈕實作

按鈕程式碼邏輯
上一筆if (myBind.Position == 0) MsgBox("已是第一筆"); else myBind.Position--;避免負索引
下一筆if (myBind.Position == myBind.Count - 1) MsgBox("已是最後一筆"); else myBind.Position++;避免越界
最末筆myBind.Position = myBind.Count - 1;直接跳至最後
最前筆myBind.Position = 0;直接跳至第一筆

關鍵屬性 Count

myBind.Count 回傳資料列總數,用於邊界判斷。

最佳實務提醒

  • 所有繫結控制項 (TextBox、ComboBox、DataGrid 等) 必須設定相同的 DataSource 與 DataMember,才能共享同一 BindingManagerBase
  • PositionChanged 事件可用於狀態列顯示「第 N 筆 / 共 M 筆」
  • 資料異動 (新增/刪除) 後,Count 與 Position 會自動調整
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved