Bài giảng Lập trình cơ sở dữ liệu - Chương 4: Data Binding

Khái niệm Data Binding Simple Data Binding Complex Data Binding Đồng bộ dữ liệu giữa các control và datasource Master – Detail Binding Source Binding Navigator

ppt44 trang | Chia sẻ: thuongdt324 | Lượt xem: 612 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình cơ sở dữ liệu - Chương 4: Data Binding, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Data BindingChương 4Nội dungKhái niệm Data BindingSimple Data BindingComplex Data BindingĐồng bộ dữ liệu giữa các control và datasourceMaster – Detail Binding SourceBinding NavigatorKhái niệm Data BindingData Binding giúp hiển thị dữ liệu trong Data Source lên controlData binding là một giải pháp cho vấn đề liên kết giữa tập dữ liệu với các controlsPhân loại: Có 2 loại Data BindingSimple Data BindingComplex Data BindingSimple Data BindingKết nối 1 property của control (loại property chỉ lưu 1 giá trị tại 1 thời điểm) với 1 cột (hay property) của data sourceVí dụ: string tenControl.Textobject tenControl.TagImage picBox.Imagebool checkBox.Checkedbool radioButton.Checkedint trackBar.ValueSimple Data BindingCách 1:DataBinding binding; binding = new DataBinding("propertyName", dataSource, "dataMember", true); tenControl.DataBindings.Add(binding);tenControl.DataBindings.Add("propertyName", dataSource, "dataMember", true);Cách 2:Complex Data BindingKết nối 1 control có khả năng hiển thị nhiều giá trị tại 1 thời điểm với 1 cột hay tất cả các cột trong data sourceVí dụ: DataGridViewComboBoxListBoxComplex Data BindingCách 1tenControl.DataSource = tenBang;Cách 2tenControl.DataSource = tenDataSet; tenControl.DataMember = tenBang;Data Binding đến PropertyData Binding đến thuộc tính TexttenTextBox.DataBindings.Add("Text", tenBang, "tenCot"); tenLabel.DataBindings.Add("Text", tenBang, "tenCot"); tenButton.DataBindings.Add("Text", tenBang, "tenCot"); tenCheckBox.DataBindings.Add("Text", tenBang, "tenCot"); tenTextBox.DataBindings.Add( "Text", tenDS, “tenBang.tenCot"); tenLabel.DataBindings.Add( "Text", tenDS, “tenBang.tenCot"); tenButton.DataBindings.Add( "Text", tenDS, “tenBang.tenCot"); tenCheckBox.DataBindings.Add( "Text", tenDS, “tenBang.tenCot"); Data Binding đến PropertyData Binding đến thuộc tính TagtenControl.DataBindings.Add("Tag", tenBang, "tenCot");tenControl.DataBindings.Add( "Tag", tenDS, “tenBang.tenCot");Data Binding đến PropertyData Binding đến thuộc tính CheckedtenCheckBox.DataBindings.Add( "Checked", tenBang, "tenCot"); tenRadio.DataBindings.Add( "Checked", tenBang, "tenCot"); tenCheckBox.DataBindings.Add( "Checked", tenDS, “tenBang.tenCot"); tenRadio.DataBindings.Add( "Checked", tenDS, “tenBang.tenCot"); Data Binding đến PropertyData Binding đến thuộc tính ValuetenDateTimePicker.DataBindings.Add( “Value", tenBang, "tenCot"); tenProcessBar.DataBindings.Add( “Value", tenBang, "tenCot"); tenTrackBar.DataBindings.Add( “Value", tenBang, "tenCot"); tenNumricUpDown.DataBindings.Add( “Value", tenBang, "tenCot"); tenVScrollBar.DataBindings.Add( “Value", tenBang, "tenCot"); tenHScrollBar.DataBindings.Add( “Value", tenBang, "tenCot"); Data Binding đến PropertyData Binding đến thuộc tính ValuetenDateTimePicker.DataBindings.Add( "Value", tenDS, "tenBang.tenCot"); tenProcessBar.DataBindings.Add( "Value", tenDS, "tenBang.tenCot"); tenTrackBar.DataBindings.Add( "Value", tenDS, "tenBang.tenCot"); tenNumricUpDown.DataBindings.Add( "Value", tenDS, "tenBang.tenCot"); tenVScrollBar.DataBindings.Add( “Value", tenDS, "tenBang.tenCot"); tenHScrollBar.DataBindings.Add( “Value", tenDS, "tenBang.tenCot"); Data Binding đến DataGridViewCách 1tenGrid.DataSource = tenBang;Cách 2tenGrid.DataSource = tenDataSet; tenGrid.DataMember = "TenBang";Data Binding đến ComboBoxCách 1tenComboBox.DataSource = tenBang; tenComboBox.DisplayMember = "tenCot1"; tenComboBox.ValueMember = "tenCot2";Cách 2tenComboBox.DataSource = tenDataSet; tenComboBox.DisplayMember = "tenBang.tenCot1"; tenComboBox.ValueMember = "tenBang..tenCot2";Data Binding đến ListBoxCách 1tenListBox.DataSource = tenBang; tenListBox.DisplayMember = "tenCot1"; tenListBox.ValueMember = "tenCot2";Cách 2tenListBox.DataSource = tenDataSet; tenListBox.DisplayMember = "tenBang.tenCot1"; tenListBox.ValueMember = "tenBang..tenCot2";Đồng bộ dữ liệu giữa các control và datasourceĐồng bộ dữ liệu giữa control và data sourceKhái niệmCơ chế đồng bộ của .NET 1.xCác thao tác của đối tượng CurrencyManagerĐồng bộ dữ liệu giữa control và data source Khái niệmĐồng bộ dữ liệu là khả năng cập nhật tức thì dữ liệu giữa các control hay giữa các control và Data sourceVí dụ: Khi nhấn button “Next”, chúng ta thấy các control đều cập nhập dữ liệu của record kế tiếpKhi chọn record bằng listbox, chúng ta thấy các thông tin liên quan tự động xuất hiện trên các control khác của cùng formĐồng bộ dữ liệu giữa control và data source Cơ chế đồng bộ của .NET 1.xKhả năng đồng bộ trong .NET 1.x không hiện thực trong ADO.NET (DataSet, DataView không có thông tin về record nào đang hiện trên form)Khả năng đồng bộ trong .NET 1.x được hiện thực trong Windows Form thông qua property BindingContext và lớp CurrencyManagerĐồng bộ dữ liệu giữa control và data source Cơ chế đồng bộ của .NET 1.xKhi chúng ta kết nối các control với một data source, chương trình tự động tạo ra một đối tượng thuộc lớp CurrencyManager để theo dõi vị trí của record trong datasourceMỗi data source tương ứng có 1 đối tượng CurrencyManagerWindows Form lưu tất cả đối tượng CurrencyManager vào trong mảng BindingContextĐồng bộ dữ liệu giữa control và data source Cơ chế đồng bộ của .NET 1.xĐồng bộ dữ liệu giữa control và data source Các thao tác của đối tượng CurrencyManagerCurrencyManager cm; cm = (CurrencyManager)this.BindingContext[tenDataSet,"Bảng"];Cách 1CurrencyManager cm; cm = (CurrencyManager)this.BindingContext[tenBang];Cách 2Đồng bộ dữ liệu giữa control và data source Các thao tác của đối tượng CurrencyManagerLớp CurrencyManagerProperty: int Positionint CountMethod: void AddNew()void EndCurrentEdit()void CancelCurrentEdit()void RemoveAt(int index)Đồng bộ dữ liệu giữa control và data source Các thao tác của đối tượng CurrencyManagerNextcm.Position++; Previouscm.Position--;Firstcm.Position = 0; Lastvt = cm.Count – 1;cm.Position = vt;Đồng bộ dữ liệu giữa control và data source Các thao tác của đối tượng CurrencyManagerCurrencyManager cm; cm = (CurrencyManager)this.BindingContext[dataTable]; if (cm.Position 0) {        cm.Position--; }Đồng bộ dữ liệu giữa control và data source Các thao tác của đối tượng CurrencyManagerInsertvoid cm.AddNew();Updatecm.EndCurrentEdit(); da.Update(dataTable);Deleteindex = cm.Positioncm.RemoveAt(index);Cancelcm.CancelCurrentEdit();Đồng bộ dữ liệu giữa control và data source Các thao tác của đối tượng CurrencyManagerChú ý quan trọng: Data source và data member của các control phải đồng nhất với nhauHoặc cùng datasetHoặc cùng datatableTốt nhất: nên dùng datatableMaster – Detail Master – detailMaster – detail: dạng quan hệ 1-n trong cơ sở dữ liệu Master – detailBước 1: fill dữ liệu Fill 2 bảng vào dataset (bao gồm khóa chính và khóa ngoại)Bước 2: tạo quan hệ DataColumn colMaster = ds.Tables[“tenMaster"].Columns[“cộtPK"];DataColumn colDetail = ds.Tables[“tenDetail"].Columns[“cộtFK"];DataRelation relation = new DataRelation(“tenquanhe", colMaster, colDetail);ds.Relations.Add(relation);Master – detailBước 3: (cách 1)dataGridViewMaster.DataSource = ds;dataGridViewMaster.DataMember = “tenMaster";dataGridViewDetail.DataSource = ds;dataGridViewDetail.DataMember = “tenMaster.tenquanhe";Master – detailBước 3: (cách 2)dataGridViewMaster.DataSource = ds.Tables[“tenMaster”];dataGridViewDetail.DataSource = ds.Tables[“tenMaster”];dataGridViewDetail.DataMember = “tenquanhe";Binding SourceKhái niệmTạo đối tượng Binding SourceKết nối control với Binding SourceCác thao tác của đối tượng BindingSourceBinding Source Khái niệmTrong .NET 1.X, chỉ cho phép kết nối trực tiếp giữa Control đến Data SourceTrong .NET 2.0, cho phép kết nối giữa Control và Data Source thông qua đối tượng trung gian Binding SourceƯu điểm khi sử dụng Binding SourceDễ dàng thay đổi Data Source của các ControlCung cấp nhiều sự kiện và các phương thứcBinding Source Khái niệmData sourceBinding SourceBinding Source Khái niệmBindingSourceDataSetDataTableDataSourceDataMemberSimple ControlComplex ControlColumnDataBindingPropertyThay đổi nội dung bằng navigatorBindingNavigatorBindingSourceDataSourceBinding Source Tạo đối tượng Binding SourceCách 1:BindingSource bs; bs = new BindingSource(); bs.DataSource = dataSource; bs.DataMember = "dataMember";Cách 2:BindingSource bs; bs = new BindingSource(dataSource, "dataMember");Binding Source Kết nối control với Binding SourceSimple Data BindingtenControl.DataSource = bs; //tenControl.DataMember = "tenBang";Complex Data Binding tenControl.DataBindings.Add("propertyName", bs, "dataMember", true);Binding Source Các thao tác của đối tượng BindingSource Nextbs.MoveNext();Previousbs.MovePrevious();Firstbs.MoveFirst();Lastbs.MoveLast();Binding Source Các thao tác của đối tượng BindingSourceInsertobject bs.AddNew();Updatebs.EndEdit(); da.Update(dataTable);Delete void bs.RemoveAt(index);void bs.RemoveCurrent(); Cancelbs.CancelEdit();Binding Source Các thao tác của đối tượng BindingSourcePropertyint bs.Positionint bs.CountCurrencyManager bs.CurrencyManagerstring bs.Filterstring bs.SortMethodvoid bs.ResetBinding(bool metaDataChanged); void bs.ResetCurrentItem();void bs.ResetItem(int index);Binding NavigatorBinding Navigator là 1 phiên bản mới của ToolStrip trong .NET 2.0 bao bọc các chức năng: MoveNext, MovePrevious, MoveFirst, MoveLast, AddNew, RemoveCurrent, Binding NavigatorCác bước tạo Binding NavigatorBước 1: Kéo Binding Navigator vào FormBước 2: Thiết lập BinddingSourcetenNavigator.BindingSource=tenBindingSource;Tóm tắt chương 4
Tài liệu liên quan