Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Cơ bản về DataBinding trong lập trình C#

  1. #1
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Talking Cơ bản về DataBinding trong lập trình C#

    Data Binding là cách mapping các thành phần của một data source vào một thành phần GUI và tự động làm việc với dữ liệu. Ví dụ có thể bind một cột (col) vào một TextBox qua thuộc tính Text hoặc có thể bind cả một table vào DataGrid như DataGridView.
    Có 2 cách bìn WinForm control vào dữ liệu :
    · Simple
    · Complex
    Simple Data Binding
    Là cách liên kết một-một giữa một thuộc tính của control và một thành phần của data source, và sử dụng control để hiển thị duy nhất một giá trị một lần.
    Thử một ví dụ :
    Tạo Winform App project, tại Form1 bạn cho thêm 2 textbox vào.
    Sau đó trong sự kiện : Form1_Load bạn chèn thêm đoạn code sau :
    Visual C# Code:
    1.         private void Form1_Load(object sender, EventArgs e)
    2.         {
    3.             string connString = @"Server = .\SQLEXPRESS;
    4.                                  Integrated Security = true;
    5.                                  Database = Northwind";
    6.             string sql = @"SELECT * FROM employees ";
    7.             SqlConnection conn = new SqlConnection(connString);
    8.             SqlDataAdapter da = new SqlDataAdapter(sql, conn);
    9.             DataSet ds = new DataSet();
    10.             da.Fill(ds, "employees");
    11.             textBox1.DataBindings.Add("text", ds, "employees.firstname");
    12.             textBox2.DataBindings.Add("text", ds, "employees.lastname");
    13.         }
    Sau đó run thì thấy textbox1 là giá trị firstname đầu tiên trong record và textbox là giá trị lastname tương ứng.
    Complex Data Binding
    Là liên kết một control với một hoặc nhiều thành phần data của data source, có thể hiển thị nhiều hơn 1 giá trị một lần.
    Tạo một WinForm App project. Thêm vào một DataGridView, sau đó hiện ra DataGridView Task chọn Choose Data Source -> Add Project -> chọn Database -> New Connection -> SQL Server, Northwind Database -> Next đến khi nào thấy mục chọn Table cho DataSet thì chọn table : Customers rồi Finish
    Build -> Ctrl + F5 xem kết quả thu được
    Binding Manager Class
    Tạo một WinForm App project.
    Đặt vào 2 textbox và 2 button
    Trong phần code của Form1.cs bạn chèn code sau :
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Data.SqlClient;
    6. using System.Drawing;
    7. using System.Text;
    8. using System.Windows.Forms;
    9.  
    10.  
    11. namespace SQLServerManger
    12. {
    13.     public partial class Form1 : Form
    14.     {
    15.         public Form1()
    16.         {
    17.             InitializeComponent();
    18.         }
    19.         // Tạo BindingManager
    20.         private BindingManagerBase bMgr;
    21.         // Sự kiện Form1_Load
    22.         private void Form1_Load(object sender, EventArgs e)
    23.         {
    24.             // Tạo connection string
    25.             string connString = @"Server = .\SQLEXPRESS;
    26.                                  Integrated Security = true;
    27.                                  Database = Northwind";
    28.             // Tạo Sql Query
    29.             string sql = @"SELECT * FROM employees ";
    30.             // Tạo connectioon
    31.             SqlConnection conn = new SqlConnection(connString);
    32.             // Tạo Adapter
    33.             SqlDataAdapter da = new SqlDataAdapter(sql, conn);
    34.             // Tạo DataSet
    35.             DataSet ds = new DataSet();
    36.             // Lấp đầy DataSet
    37.             da.Fill(ds, "employees");
    38.             // Bind giá trị cột firstname vào textbox1
    39.             textBox1.DataBindings.Add("text", ds, "employees.firstname");
    40.             // Bind giá trị cột lastname vào textbox2
    41.             textBox2.DataBindings.Add("text", ds, "employees.lastname");
    42.             // Cài Binding Manager vào DataSet để quản lý
    43.             bMgr = this.BindingContext[ds, "employees"];
    44.  
    45.         }
    46.         // Lấy record tiếp theo
    47.         private void button2_Click(object sender, EventArgs e)
    48.         {
    49.             bMgr.Position += 1;
    50.         }
    51.         // Trở lại record trước
    52.         private void button1_Click(object sender, EventArgs e)
    53.         {
    54.             bMgr.Position -= 1;
    55.         }
    56.     }
    57. }
    Phần này mình chằng có gì biết nhiều hết chỉ thế thôi. Đừng nghĩ là Data Binding dễ nhé, phức tạp lắm đó. Chẳng qua là code của Data Binding được Generate tự dộng nên mình có thể làm thao tác đơn giản thế này. Nhưng nếu thế này thì cũng không hay lắm vì không hiểu cách thức làm việc của nó. Tóm lại là sao cũng được.
    Kết thúc về Data Binding.

    Mục lục:
    1. Giới thiệu cơ bản ngôn ngữ SQL
    2. Giới thiệu cơ bản về ADO.NET
    3. Tạo kết nối tới database
    4. Thực thi câu lệnh SQL
    5. Xử lý kết quả với Data Reader
    6. Cách xử lý dữ liệu với Data Adapter và DataSet
    7. Giới thiệu về DataBinding
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.
    Đã được chỉnh sửa lần cuối bởi Xcross87 : 03-08-2007 lúc 10:58 AM.
    None!

  2. #2
    Ngày gia nhập
    05 2007
    Bài viết
    3

    string sql = @"SELECT * FROM employees ";
    da.Fill(ds, "employees");

    Câu truy vấn trên của bạn chỉ select từ 1 bảng nên khi Fill thì chỉ Fill 1 bang Employee. Giả sử câu truy vấn của tớ select thêm 1 bảng nữa tức là có 2 bảng (SELECT ten,nhọmlamviec,email FROM employess INNER JOIN NhomNhanVien ON NhomNhanVien.id_nhomlamviec=employees.nhomlamviec) .
    Vậy khi Fill thì minh Fill nhu thế nào?
    Tớ làm thế này da.Fill(ds, "employees,NhomNhanVien"); <= vẫn chạy bình thương. Nhung khi cài BindingManager khi chạy nó báo lỗi.

  3. #3
    Ngày gia nhập
    11 2008
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi nghiadiahoang Xem bài viết
    string sql = @"SELECT * FROM employees ";
    da.Fill(ds, "employees");

    Câu truy vấn trên của bạn chỉ select từ 1 bảng nên khi Fill thì chỉ Fill 1 bang Employee. Giả sử câu truy vấn của tớ select thêm 1 bảng nữa tức là có 2 bảng (SELECT ten,nhọmlamviec,email FROM employess INNER JOIN NhomNhanVien ON NhomNhanVien.id_nhomlamviec=employees.nhomlamviec) .
    Vậy khi Fill thì minh Fill nhu thế nào?
    Tớ làm thế này da.Fill(ds, "employees,NhomNhanVien"); <= vẫn chạy bình thương. Nhung khi cài BindingManager khi chạy nó báo lỗi.
    Câu lệnh Sql của bạn trả về kết quả là một table nên câu lệnh Fill của bạn viết như vậy là sai rồi còn gì.

  4. #4
    Ngày gia nhập
    05 2007
    Bài viết
    3

    Trích dẫn Nguyên bản được gửi bởi nonggiatu Xem bài viết
    Câu lệnh Sql của bạn trả về kết quả là một table nên câu lệnh Fill của bạn viết như vậy là sai rồi còn gì.
    Thế tớ mới hỏi là giờ phải làm ntn bây giờ?

  5. #5
    Ngày gia nhập
    11 2008
    Nơi ở
    vngameday.com
    Bài viết
    62

    Bạn fill như cũ da.Fill(ds, "employees"); không có gì khác biệt cả, và khi binding thi binding đúng cái tên mà bạn đã select.

    Chúc bạn thành công !
    vngameday.com - khi niềm đam mê luôn rực cháy. Rất mong nhận được sự đóng góp từ các bạn...

  6. #6
    Ngày gia nhập
    12 2009
    Bài viết
    18

    Mặc định Cơ bản về DataBinding trong lập trình C#

    Trích dẫn Nguyên bản được gửi bởi nghiadiahoang Xem bài viết
    string sql = @"SELECT * FROM employees ";
    da.Fill(ds, "employees");

    Câu truy vấn trên của bạn chỉ select từ 1 bảng nên khi Fill thì chỉ Fill 1 bang Employee. Giả sử câu truy vấn của tớ select thêm 1 bảng nữa tức là có 2 bảng (SELECT ten,nhọmlamviec,email FROM employess INNER JOIN NhomNhanVien ON NhomNhanVien.id_nhomlamviec=employees.nhomlamviec) .
    Vậy khi Fill thì minh Fill nhu thế nào?
    Tớ làm thế này da.Fill(ds, "employees,NhomNhanVien"); <= vẫn chạy bình thương. Nhung khi cài BindingManager khi chạy nó báo lỗi.

    bạn vẫn fill như bt với tên bảng là employees , còn việc fill vào 2 bảng thì bảng sau vẫn có tên giống bảng trước . Hình như 1 vd của xcross có nói về cái này rồi. Bạn xem lại nhé

  7. #7
    Ngày gia nhập
    01 2010
    Bài viết
    5

    tham số thứ 2 trong lệnh Fill chỉ là đặt tên cho table trong dataset thôi bạn ah`, chứ bạn đừng nhầm là đó là tên table cần đưa vào dataset. nếu bạn ko đặt tên thì mặc định khi fill vào bảng sẽ có tên là table, table1, table2 ......
    ps: Xcross hình như có nói qua rồi mà

  8. #8
    Ngày gia nhập
    02 2011
    Bài viết
    18

    đúng phần e cần ! thanks a nhìu ^^ ....trên lớp học lan man 1 hồi ko tập trung đc về nhà lười ko đọc luôn !!

  9. #9
    Ngày gia nhập
    08 2010
    Nơi ở
    http://gocnhinthoidai.blogspot.com
    Bài viết
    52

    anh xcro ơi. những phần sau anh up chưa ạ? em tìm ko thấy?
    rất cám ơn vì sự nhiệt tình của ông anh.

    HỌC TÂP VÀ CHIA SẺ!

  10. #10
    Ngày gia nhập
    06 2013
    Bài viết
    2

    Trích dẫn Nguyên bản được gửi bởi nghiadiahoang Xem bài viết
    string sql = @"SELECT * FROM employees ";
    da.Fill(ds, "employees");

    Câu truy vấn trên của bạn chỉ select từ 1 bảng nên khi Fill thì chỉ Fill 1 bang Employee. Giả sử câu truy vấn của tớ select thêm 1 bảng nữa tức là có 2 bảng (SELECT ten,nhọmlamviec,email FROM employess INNER JOIN NhomNhanVien ON NhomNhanVien.id_nhomlamviec=employees.nhomlamviec) .
    Vậy khi Fill thì minh Fill nhu thế nào?
    Tớ làm thế này da.Fill(ds, "employees,NhomNhanVien"); <= vẫn chạy bình thương. Nhung khi cài BindingManager khi chạy nó báo lỗi.
    da.Fill(ds, "employees"); .Cái đó bạn đặt tên gì cũng được. Về sau sử dụng tên đó thôi. tốt nhất khi inner join thì đặt employees_NhomNhanVien cho đỡ nhầm lẫn
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

Các đề tài tương tự

  1. Một vài kiểu databinding thường dùng
    Gửi bởi iloveit1208 trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 7
    Bài viết cuối: 07-05-2013, 06:29 PM
  2. Databinding của textbox trong asp.net
    Gửi bởi xmdjeu trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 13-01-2013, 11:00 AM
  3. Xin tài liệu Databinding trong C#
    Gửi bởi kael_vn90 trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 3
    Bài viết cuối: 17-07-2012, 11:05 PM
  4. ebook về DataBinding, ai có làm ơn cho mình xin?
    Gửi bởi ninjaloanthi89 trong diễn đàn Công cụ, ebooks C#, ASP.NET, và Windows Mobile
    Trả lời: 3
    Bài viết cuối: 27-08-2009, 12:44 PM
  5. [Cần gấp] DataBinding ở 2 bảng
    Gửi bởi nghiadiahoang trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 12-11-2008, 03:29 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn