Giáo trình môi trường và công cụ lập trình 1 phần 2 nguyễn minh hiệp

71 187 0
Giáo trình môi trường và công cụ lập trình 1  phần 2   nguyễn minh hiệp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TRƯỜNG ĐẠI HỌC ĐÀ LẠT KHOA CÔNG NGHỆ THÔNG TIN NGUYỄN MINH HIỆP GIÁO TRÌNH MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH Dành cho sinh viên ngành cơng nghệ thơng tin Đà Lạt, 2010 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] Chương 4: Viewing NET data Tổng quan Chương cuối cách khác để chọn thay đổi liệu Chương này, minh hoạ cách bạn thể liệu cho người sử dụng thấy cách gắn kết control Windows Khả gắn kết liệu NET giống với ADO control VB Tất ngơn ngữ NET có khả sử dụng Control phương thức Khía cạnh mà xem xét control DataGrid Một đặc tính hay Datagrid tính uyển chuyển- nguồn liệu mảng, DataTable, DataView, DataSet thành phần thực thi giao diện IListSource hay IList Với số lượng lớn tuỳ chọn cách mà nguồn liệu sử dụng xem DataGrid Gắn kết liệu yêu cầu thông thường, VB có khả khơng NET, tất ngơn ngữ quản lý hồn thiện khả gắn kết liệu Có giới hạn cột liệu, control cập nhật tự động hàng liệu thay đổi Chương tìm hiểu vài khả gắn kết liệu cách để kết nối liệu với control Windows Forms Chúng ta xem vài cơng việc bên q trình gắn kết liệu để hiểu rõ cách chúng hoạt động Nguồn liệu trở nên hợp lý Visual studio.NET, chương cách sử dụng server Explorer để tạo kết nối phát sinh Dataset Chúng ta tìm hiểu cách dùng lược đồ XSD visual studio.NET Trang 156 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] 4.1 The Control DataGrid DataGrid control hoàn toàn, viết cho ngơn ngữ NET, cho phép có nhìn khác liệu hiển thị Bạn hiển thị liệu cách gọi phương thức SetDataBinding() 4.1.1 Hiển thị liệu xếp theo cột: Phần cuối chương trình bày nhiều cách chọn liệu lấy bảng liệu, liệu hiển thị kiểu bản; đơn giản dùng Console.WriteLine() Ví dụ cách khôi phục liệu hiển thị control DataGrid Hình bên hình từ ứng dụng xây dựng: Ứng dụng chọn phần tử từ Customer sở liệu NorthWind hiển thị phần tử cho người dùng DataGrid Đoạn mã ngắn, ta bước xem xét chúng sau: using System; using System.Windows.Forms; using System.Data; using System.Data.SqlClient; Trang 157 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] public class DisplayTabularData : System.Windows.Forms.Form { private System.Windows.Forms.Button retrieveButton; private System.Windows.Forms.DataGrid dataGrid; public DisplayTabularData() { this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(464, 253); this.Text = "01_DisplayTabularData"; Tiếp đến, ta tạo control khung lưới(grid), cài đặt thuộc tính Dịng thứ hai: dataGrid.BeginInit(); dùng tạo nhiều thay đổi control Nếu kiện khơng giới hạn, thay đổi khung lưới tạo Redraw hình Sau ta xác định vị trí kích thước Control, định nghĩa mục tab, neo control vào hai góc bên trái góc bên phải cửa sổ để cân xứng cửa sổ ứng dụng this.dataGrid = new System.Windows.Forms.DataGrid(); dataGrid.BeginInit(); dataGrid.Location = new System.Drawing.Point(8, 8); dataGrid.Size = new System.Drawing.Size(448, 208); dataGrid.TabIndex = 0; dataGrid.Anchor = AnchorStyles.Bottom | AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; this.Controls.Add(this.dataGrid); dataGrid.EndInit(); Bây ta tạo nút Cùng với bước theo sau việc khởi tạo nút: Trang 158 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] this.retrieveButton = new System.Windows.Forms.Button(); retrieveButton.Location = new System.Drawing.Point(384, 224); retrieveButton.Size = new System.Drawing.Size(75, 23); retrieveButton.TabIndex = 1; retrieveButton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; retrieveButton.Text = "Retrieve"; retrieveButton.Click += new System.EventHandler (this.retrieveButton_Click); this.Controls.Add(this.retrieveButton); Chúng ta có kiện click gọi điều khiển kiện retrieveButton_click protected void retrieveButton_Click(object sender, System.EventArgs e) { retrieveButton.Enabled = false; string source = "server=(local)\\NetSDK;" + "uid=QSUser;pwd=QSPassword;" + "database=Northwind"; Sau chọn liệu từ bảng Customer điền liệu vào tập liệu Ta gọi phương thức SetĐataBlinding để gắn kết liệu tập liệu khung lưới Phương thức truyền vào tập liệu tên bảng DataSet Một khung lưới liệu từ DataTable thời điểm DataSet chứa nhiều bảng string select = "SELECT * FROM Customers" ; SqlConnection conn = new SqlConnection(source); SqlDataAdapter da = new SqlDataAdapter( select , conn); DataSet ds = new DataSet(); da.Fill(ds , "Customers"); Trang 159 Khoa CNTT [MÔI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] dataGrid.SetDataBinding(ds , "Customers"); } static void Main() { Application.Run(new DisplayTabularData()); } } Để biên dịch đoạn mã bạn gõ dòng lệnh sau: csc /t:winexe /debug+ /r:System.dll /r:System.Data.dll /r:system.windows.forms.dll /recurse:*.cs Tham số /recurse:*.cs biên dịch tất tập tin cs thư mục hành thư mục Đó cách viết tắt, nên bạn không cần phải nhớ tất tập tin bạn phải chắn có tập tin bạn cần nằm thư mục 4.1.2 Nguồn liệu: DataGrid cách linh động để hiển thị liệu; thêm vào để gọi phương thức SetDataBlinding() với DataSet tên bảng để hiển thị phương thức gọi với nguồn liệu sau:  Một mảng  Datatable  DataView  DataSet hay DataViewManager  Những thành phần thực thi giao diện IListSource  Những thành phần thực thi giao diện IList 4.1.2.1 Hiển thị liệu từ mảng: Trang 160 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] Nhìn thống qua có vẽ dễ dàng Tạo mảng, điền liệu vào mảng gọi phương thức SetDataBlinding(array,null) DataGrid Như ví dụ sau: string[] stuff = new string[] {"One", "Two", "Three"}; dataGrid.SetDataBinding(stuff, null); Chú ý phương thức SetDataBlinding() có hai tham số, tham số đầu nguồn liệu trường hợp mảng, tham số lại: nguồn liệu DataSet hay DataViewMannager gán tên bảng muốn hiển thị cịn ngược lại gán giá trị null Bạn thay đoạn mã điều khiển kiện retriveButton_click() ví dụ trước với đoạn mã Kết hiển thị có vấn đề sau: Bạn thấy kết hiển thị có nhiều số chuỗi mà bạn định nghĩa mảng, Khung lưới hiển thị thêm chiều dài chuỗi Nguyên nhân sử dụng mảng nguồn liệu Datagrid khung lưới tìm thuộc tính chung đối tượng bên mảng để hiển thị trường hợp chiều dài chuỗi Trang 161 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] Một cách giải tạo lớp bao bọc cho chuỗi bên dưới: protected class Item { public Item(string text) { m_text = text; } public string Text { get{return m_text;} } private string m_text; } 4.1.2.2 DataTable Có hai cách để hiển thị DataTable DataGrid:  Nếu DataTable bạn đứng gọi phương thức SetDataBlingding(DataTable,null) Trang 162 Khoa CNTT [MÔI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH]  Nếu DataTable bạn chứa DataSet gọi SetDataBlinding(DataSet,"") Ví dụ bên để số cột: Chú ý hiển thị cột cuối cùng; checkbox để thay cho control thông thường DataGrid đọc lượt đồ từ nguồn liệu suy kiểu cột mà control hiển thị Dữ liệu sở liệu không thay đổi bạn thay đổi trường khung lưới liệu 4.1.2.3 Hiển thị liệu từ DataView Một DataView cung cấp phương tiện để lọc xếp liệu bên DataTable Khi bạn chọn liệu từ sở liệu, thơng thường cho phép người dùng xếp liệu Thêm vào đó, bạn muốn lọc liệu để hàng Một DataView cho phép bạn giới hạn số hàng hiển thị cho người dùng khơng giới hạn số cột DataTable Một DataView không cho phép bạn thay đổi cột để hiển thị mà thay đổi hàng Trang 163 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] Bên dịng mã để tạo DataView dựa DataTable tồn tại: DataView dv = new DataView(dataTable); Khi tạo bạn thay đổi cài đặt DataView, ảnh hưởng đến liệu tác vụ chúng hiển thị bên DataGrid Một vài ví dụ là:  Cài đặt AllowEdit = false khố chức chỉnh sửa dòng  Cài đặt AllowNew = false khố chức tạo dịng  Cài đặt AllowDelete = false khố khả xố dịng  Cài đặt RowStateFilter hiển thị dòng trạng thái cho  Cài đặt RowFilter để lọc hàng  Xắp xếp dòng cột 4.1.2.4 Lọc hàng liệu: Khi bạn tạo DataView, bạn thay đổi liệu hiển thị cách cài đặt thuộc tính RowFilter Thuộc tính chuỗi dùng phương tiện để lọc tiêu chuẩn đó- giá trị chuỗi dùng tiêu chuẩn lọc Vài ví dụ mệnh đề lọc bảng Mệnh đề Mục đích UnitsInStock > 50 Chỉ hàng có UnitslnStock lớn 50 Client = 'Smith' Chỉ trả mẫu cho client County LIKE 'C*' Trả tất mẫu mà trường Country bắt đầu ký tự C 4.1.2.5 Lọc hàng trạng thái Trang 164 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] BufferedStream bufOutput =new BufferedStream(outputstream); Sau đó, bạn sử dụng BufferedStream stream bình thường, bạn triệu gọi hàm Read() Write() bạn làm trước Hệ điều hành lo việc quản lý vùng đêm: while ((bytesRead = bufInput.Read(buffer, 0, SIZE_BUFF))>0) { bufOutput.Write(buffer, 0, bytesRead); } Chỉ có khác biệt mà bạn phải nhớ cho phải tuôn ghi (flush) nội dung buffer bạn muốn bảo đảm liệu ghi lên đĩa bufOutput.Flush(); Lệnh bảo hệ điều hành lấy tồn liệu buffer cho tn ghi lên tập tin đĩa 5.3.4 Làm việc với file văn Nếu bạn biết file bạn làm việc (đọc/viết) thuộc loại văn nghĩa liệu kiểu string, bạn nên nghĩ đến việc sử dụng đến lớp StreamReader StreamWriter Cả hai lớp theo làm việc với ký tự Unicode Tuy nhiên bạn thay đổi điều cách cung cấp đối tượng quy chiếu cấu hình cách thích hợp theo System.Text.Reference Nói tóm lại hai lớp thiết kế để thao tác dễ dàng tập tin loại văn Lớp StreamReader dẫn xuất từ lớp abstract mang tên TextReader giống String Reader Lớp TextReader cung cấp số chức hạn chế cho hậu duệ, đặc biệt khả đọc "liếc nhìn" (peek) lên dịng ký tự (character stream) Trang 211 Khoa CNTT [MÔI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] Lớp StreamWriter StringWriter dẫn xuất từ lớp abstract mang tên TextWriter; lớp định nghĩa thành viên cho phép lớp dẫn xuât viết liệu văn lên dịng văn 5.3.4.1 Các thành viên lớp TextWriter Tên phương thức Close() Ý nghĩa Cho đóng lại writer giải phóng nguồn lực chiếm dụng Flush() Cho xoá tất buffer writer hành NewLine Thuộc tính dùng làm sang Write() Viết lên text stream khơng có newline constant WriteLine() Viết lên text stream có newline constant 5.3.4.2 Ví dụ đọc, viết tập tin văn bản: Ví dụ ReadWriteText trình bày cách sử dụng lớp StreamReader StreamWriter Nó trình bày file đọc vào hiển thị Nó lưu file Nó lưu file định dạng Unicode Màn hình trình bày ReadWriteText dùng hiển thị file CivNegotiations Chúng ta đọc nhiều định dạng file khác Trang 212 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] Chúng ta nhìn vào đoạn mã sau Trước tiên ta thêm câu lệnh using , Từ bên cạnh System.IO, sử dụng lớp StringBuilder từ System.Text namespace để xây dựng chuỗi textbox: using System.IO; using System.Text; Tiếp theo thêm trường cho lớp main form public class Form1 : System.Windows.Forms.Form { private OpenFileDialog chooseOpenFileDialog = new OpenFileDialog(); private string chosenFile; Chúng ta cần thêm vài chuẩn mã Windows Forms để thực điều khiển cho menu hộp thoại: Trang 213 Khoa CNTT [MÔI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] public Form1() { InitializeComponent(); menuFileOpen.Click += new EventHandler(OnFileOpen); chooseOpenFileDialog.FileOk += new CancelEventHandler(OnOpenFileDialogOK); } void OnFileOpen(object Sender, EventArgs e) { chooseOpenFileDialog.ShowDialog(); } void OnOpenFileDialogOK(object Sender, CancelEventArgs e) { chosenFile = chooseOpenFileDialog.FileName; this.Text = Path.GetFileName(chosenFile); DisplayFile(); } Từ thấy người sử dụng nhấn OK để chọn file hộp thoại, gọi phương thức DisplayFile(), dùng để đọc file void DisplayFile() { int nCols = 16; Trang 214 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] FileStream inStream = new FileStream(chosenFile, FileMode.Open, FileAccess.Read); long nBytesToRead = inStream.Length; if (nBytesToRead > 65536/4) nBytesToRead = 65536/4; int nLines = (int)(nBytesToRead/nCols) + 1; string [] lines = new string[nLines]; int nBytesRead = 0; for (int i=0 ; i MaxBytes) break; Trang 217 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] result.Add(nextLine); } sr.Close(); return result; } Đến đoạn mã hoàn thành 5.4 Đọc viết vào Registry Trong Windows từ Windows 95 trở Registry trung tâm lưu trữ tất thơng tin cấu hình liên quan đến cài đặt Windows, sở thích người dùng, phần mền cài đặt, thiết bị Hầu hết tất phần mềm thương mại sử dụng Registry để chứa thông tin nó, thành phần COM phải đặt thông tin chúng Registry gọi ứng dụng khách NET Framework giảm quan trọng Registry ứng dụng, assembly trở thành "tự cung tự cấp" khơng cần thơng tin đặc điết để trữ Registry Registry nơi tiện lợi để bạn trữ thơng tin sở thích người sử dụng (user preference) Namespace Trang 218 Khoa CNTT [MÔI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] Microsoft.Win32 định nghĩa vài lớp cho phép đọc viết system registry cách dễ dàng Trước tiên xem lại cấu trúc Registry 5.4.1 The Registry Registry có cấu trúc đẳng cấp giống hệ thống tập tin (file system) Cách thơng thường để nhìn xem thay đổi nội dung Registry với hai tiên ích: regedit.exe regedt32.exe diện tất phiên Windows, từ Window 95 trở thành chuẩn Cịn Regedt32.exe diện Windows NT Windows 2000, thân thiện so với regedit.exe cho phép truy cập vào thông tin an ninh mà regedit khơng có khả nhìn xem Trong phần sử dụng regedit.exe khung đối thoại Run command promt Khi bạn khởi chạy regedit bạn thấy hình sau đây: Regedit có giao diện mang dáng dấp treeview/listview giống Windows Explorer, khớp với cấu trúc đẳng cấp thân Registry Tuy nhiên thấy có vài khác biệt Trang 219 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] Trong file system, mắt cấp chóp xem partitions ổ đĩa , C:\, D:\, Trong Registry,tương đương với partition registry hive Các khn có định khơng thể thay đổi có thảy bảy  HKEY_CLASSES_ROOT (HKCR) chứa chi tiết loại tập tin(.txt, doc, and so on), ứng dụng có khả mở tập tin loại Ngoài cịn chứa thơng tin đăng ký tất cấu kiện COM (chiếm phần lớn Registry, Windows mang theo vô số thành phần COM )  HKEY_CURRENT_USER (HKCU) chứa chi tiết liên quan đến sở thích người sử dụng đang nhập máy tính  HKEY_LOCAL_MACHINE (HKLM) hive đồ sộ chứa chi tiết tất phần mềm phấn cứng cài đặt máy tính  HKEY_USERS (HKUSR) chứa chi tiết liên quan đến sở thích tất người sử dụng Như bạn chờ đợi, chứa hive HKCU đơn giản ánh xạ lên key HKEY_USERS  HKEY_CURRENT_CONFIG (HKCF) chứa đựng chi tiết liên quan đến phần cứng máy tính Phần cịn lại hai key chứa thơng tin mang tình trạng tạm thời thay đổi thường xuyên:  HKEY_DYN_DATA container tổng quát liệu volatile cần lưu trữ Registry  HKEY_PERFORMANCE_DATA chứa thơng tin liên quan đến thành tích ứng dụng chạy Trong lòng hive cấu trúc gồm Registry key Mỗi key (mục khoá) cũnggiống folder file file system Tuy nhiên có khác Trang 220 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] biệt quan trọng File system phân biệt files folders Registry diện toàn key Một key chứa liệu key khác Nếu key chứa liệu lúc diện loạt trị Mỗi trị có tên kiểu liệu trị Một key có trị không đặt tên Key HKCU\Control Panel\Appearance có trị có mang tên trị không chứa liệu Cột Type chi tiết hoá kiểu liệu trị Các mục vào vào Registry định dạng theo kiểu liệu:  REG_SZ gần tương đương với NET string  REG_DWORD gần tương đương với NET unit  REG_BINARY dãy byte 5.4.2 The NET Registry Classes Việc truy cập vào Registry NET thông qua hai lớp Registry RegistryKey thuộc amespace Microsoft.Win32 Một thể lớp RegistryKey tượng Trang 221 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] trưng cho registry key Lớp RegistryKey cung cấp thành viên cốt lõi cho phép bạn làm việc với registry key Lớp RegistryKey lớp mà bạn dùng để làm việc với registry key Ngược lại lớp Registry lớp mà bạn chả thể Vai trị cung cấp cho bạn thể RegistryKey tượng trưng cho key top-level hive khác để qua thuộc tính static có thảy thuộc tính bao gồm ClassesRoot, CurrentConfig, CurrentUser, DynData, LocalMachine, PerformanceData, and Users chắn bạn biết thuộc tính Registry hive Do muốn có thể RegistryKey tượng trưng cho key HKLM, bạn viết RegistryKey hklm = Registry.LocalMachine; Nếu bạn muốn đọc vài liệu key HKLM\Software\Microsoft, bạn phải lấy qui chiếu key sau : RegistryKey hklm = Registry.LocalMachine; RegistryKey hkSoftware = hklm.OpenSubKey("Software"); RegistryKey hkMicrosoft = hkSoftware.OpenSubKey("Microsoft"); Một registry key truy cập theo kiểu chi cho phép bạn đọc mà thôi, Nếu bạn muốn có khả viết lên key (bao gồm viết lên trị key, tạo gỡ bỏ thuộc quyền), bạn phải sử dụng OpenSubkey nhận thêm thông số thứ hai thuộc kiểu bool cho biết quyền read-write key Ví dụ bạn muốn có khả thay đổi key Microsoft RegistryKey hklm = Registry.LocalMachine; RegistryKey hkSoftware = hklm.OpenSubKey("Software"); RegistryKey hkMicrosoft = hkSoftware.OpenSubKey("Microsoft", true); Trang 222 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] Phương thức OpenSubKey() hàm mà bạn triệu gọi bạn chờ đợi key hữu Nếu khơng có trở null preference Còn bạn muốn tạo key bạn dùng CreateSubKey() (hàm tự hoạt động cho quyền read write): RegistryKey hklm = Registry.LocalMachine; RegistryKey hkSoftware = hklm.OpenSubKey("Software"); RegistryKey hkMine = hkSoftware.CreateSubKey("MyOwnSoftware"); Một bạn có registry key bạn muốn đọc thay đổi, bạn sử dụng phương thức SetValue() GetValue() để đặt để lấy liệu key Thí dụ: RegistryKey hkMine = HkSoftware.CreateSubKey("MyOwnSoftware"); hkMine.SetValue("MyStringValue", "Hello World"); hkMine.SetValue("MyIntValue", 20); Đoạn mã đặt key hai trị : MyStringValue mang kiểu liệu REG_SZ, MyIntValue mang kiểu liệu REG_DWORD RegistryKey.GetValue() Nó định nghĩa trả quy chiếu đối tượng, nghĩa trả quy chiếu string thấy có kiểu liệu REG_SZ, int phát kiểu liệu REG_DWORD: string stringValue = (string)hkMine.GetValue("MyStringValue"); int intValue = (int)hkMine.GetValue("MyIntValue"); Cuối xong việc bạn phải cho đóng lại hkMine.Close(); Các thành phần RegistryKey bao gồm thuộc tính phương thức sau: Trang 223 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] 5.4.2.1 Properties Property Name Description Name Tên key (read-only) SubKeyCount số lượng sub key ValueCount Các trị key 5.4.2.2 Methods Method Name Purpose Close() Đóng lại key CreateSubKey() Tạo subkey tên cho DeleteSubKey() Bỏ key định DeleteSubKeyTree() Gỡ bỏ cách đệ quy subkey DeleteValue() Tháo bỏ tên trị từ key GetSubKeyNames() Trả dãy chuỗi chứa tên subkeys GetValue() Trả tên trị GetValueNames() Trả dãy chuỗi chứa tên tất trị key OpenSubKey() Trả tham khảo đến RegistryKey,hàm cho tìm lại subkey Trang 224 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH] Method Name Purpose SetValue() Hàm cho đặt trị định Trang 225 ... DataViewManager  Những thành phần thực thi giao diện IListSource  Những thành phần thực thi giao diện IList 4 .1. 2 .1 Hiển thị liệu từ mảng: Trang 16 0 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] Nhìn thống... m_text; } 4 .1. 2. 2 DataTable Có hai cách để hiển thị DataTable DataGrid:  Nếu DataTable bạn đứng gọi phương thức SetDataBlingding(DataTable,null) Trang 16 2 Khoa CNTT [MƠI TRƯỜNG VÀ CƠNG CỤ LẬP TRÌNH]... thêm thực thể vào thuộc tính DataBinding Đoạn mã bên tạo gắn kết mới: textBox1.DataBindings.Add("Text", ds, "Products.ProductName"); Trang 17 9 Khoa CNTT [MÔI TRƯỜNG VÀ CÔNG CỤ LẬP TRÌNH] Phương

Ngày đăng: 04/12/2015, 19:42

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan