DataGridView trong Lập trình Csharp | MicrosoftTech.Net

DataGridView

1. Control DataGridView

Là control được tổ chức dưới dạng bảng với các cột dọc (column) và hàng ngang (row), trên đầu mỗi cột có tên cột. DataGridView hữu ích trong trường hợp xuất dữ liệu có cấu trúc mảng 2 chiều, bảng dữ liệu, lưu trữ thống kê, database…

2. Xử lý cột (Column) trong DataGridView
Khi vừa khởi tạo từ ToolBox, DataGridView là bảng trống không có dòng và cột, trước tiên ta cần phải tạo cột, sau đó mới có thể thêm dữ liệu vào theo từng hàng. Đầu tiên ta sẽ tìm hiểu cách xử lý cột trong giao diện kéo thả của Visual Studio và sau đó là xử lý trên Code. Đầu tiên ta nhấm vào mũi tên nhỏ ở góc phải phía trên của control để xuất hiện bảng DataGridView Task, tại đây ta có thể thêm cột và thiết lập tùy chỉnh cho các cột đó. Thêm cột tại Add Column và chỉnh sửa cột tại Edit Column. Các checkbox bên dưới thiết lập cho phép (hoặc không) thêm, bớt, chỉnh sửa, xóa dữ liệu trên DataGridView trong quá trình chạy ứng dụng.

Nhìn vào bảng Edit Column bên dưới ta thấy trình quản lý các column, tại đây ta có thể thay đổi tên, text hiển thị đầu dòng và một số tùy chỉnh layout tại nhóm chức năng Layout
Tìm hiểu Control DataGridView Lập trình Windows Form | MicrosoftTech.Net
3. Xử lý cột trong Code.
Bên dưới là cách thêm cột cho DataGridView. Trong ví dụ ta cần thêm 3 cột nên lần lượt tạo 3 đối tượng DataGridViewTextBoxColumn và thứ tự thiết lập thuộc tính cho mỗi cột và cuối cùng thông qua phương thức AddRange để Add các cột vào DataGridView. Trong ví dụ trên ta thấy còn có 1 cột nhỏ bên trái DataGridView, để ẩn cột này ta thiết lập giá trị False cho thuộc tính RowHeaderVisible.
Tìm hiểu Control DataGridView Lập trình Windows Form | MicrosoftTech.Net
4. Thêm dữ liệu cho DataGridView
Thông qua phương thức Rows.Add() ta có thể dễ dàng thêm dữ liệu cho DataGridView. Ta thấy DataGridView có 3 cột nên đối số của phương thức Rows.Add() cần có 3 chuỗi, nếu ít hơn thì những vị trí sau sẽ bị chừa trống.
Tìm hiểu Control DataGridView Lập trình Windows Form | MicrosoftTech.Net
5. Truy xuất dữ liệu trong DataGridView
DataGridView tổ chức dữ liệu giống như 1 mảng 2 chiều thông thường, ta có thể thiết lập và truy xuất dữ liệu dễ dàng thông qua chỉ số hàng và cột. Bên dưới ta tiến hành lấy dữ liệu trong DataGridView thông qua các chỉ số hàng, cột đưa vào ở các TextBox. Lưu ý: dữ liệu trong các Cell (ô) lưu trữ dưới kiểu string. Việc gán dữ liệu vào bảng cũng tiến hành tương tự.
Tìm hiểu Control DataGridView Lập trình Windows Form | MicrosoftTech.Net
6. Event Cell Click
Với sự kiện này sẽ trả về cho chúng ta vị trí của cell đang được chọn, từ đó ta có thể dễ dàng lấy được dữ liệu trong cell. Ở đây ta có thêm vào phần xử lý dữ liệu với Clipboard. Khi có thao tác click vào 1 cell bất kỳ thì dữ liệu trong nó sẽ được copy vào bộ nhớ đệm, sau đó từ bộ nhớ đệm sẽ đổ dữ liệu vào label để hiển thị giá trị.
Tìm hiểu Control DataGridView Lập trình Windows Form | MicrosoftTech.Net

MicrosoftTech.Net

Bài viết với Chủ đề Liên quan


16 comments to DataGridView

  • HTPHONG

    Cho mình hỏi làm sao để lấy dữ liệu của dòng đang chọn để load lên 1 form mới z?

  • microsofttech.net

    Chào bạn!

    Xem trong mục “6. Event Cell Click” bạn sẽ thấy thuộc tính e.rowIndex cho biết dòng dữ liệu đang được được chọn, từ đây có thể dễ dàng lấy hết dữ mới trên dòng đó.
    Còn việc đưa dữ liệu lên Form khác, ở đây sẽ có 2 trường hợp:

    • 1. Đưa dữ liệu lên Form mới được tạo. Chỉ cần thêm đối số trong Constructor và tiến hành truyền dữ liệu qua Constructor khi khởi tạo Form.
    • 2. Đưa dữ liệu lên Form đã có sẵn. Ở đây có thể sử dụng cơ chế của delegate để truyển dữ liệu hoặc trên Form đó bạn cài đặt 1 timer thường xuyên detect để kiểm tra sự thay đổi của clipboard để khi tiến hành copy bên Form này thì Form kia sẽ nhận được dữ liệu thông qua clipboard, tiếp theo tiến hành phân tích để nhận diện xem đây có phải dữ liệu cần lấy hay không (vì có thể có clipboard do các quá trình copy khác)

    Mình chỉ có thể đưa cách làm chứ không thực hiện Demo cụ thể giúp bạn được, có vấn đề gì bạn cứ liên hệ nhé!
    Thân chào! :)

  • Phạm Anh

    bạn ơi cho mình hỏi:

    VD: mình có 1DataGridView với 3column: stt-Tên-ngày sinh và 1textBox Họ tên, 1DateTimePick ngày sinh, 1button Sửa
    Làm sao để khi kích chuột vào đầu hàng(hàng đc bôi đen) và click vào nút sửa thì dữ liệu ở Tên-Ngày sinh trong datagridview được hiện tương ứng trên textBox Họ tên và DateTimePick vậy?

    • microsofttech.net

      Chào bạn!

      Vấn đề của bạn giải quyết như sau:

      • ■ int index = datagridview.CurrentRow.Index; để lấy dòng đang được chọn, được chọn ở đây nghĩa là đang bấm vào 1 ô bất kỳ trên dòng chứ không nhất thiết chọn cả dòng. Lưu ý chỉ đúng cho trường hợp chọn 1 dòng, còn chọn nhiều dòng sẽ khác. Bạn thử chọn nhiều dòng theo 2 cách sau để xem index trả về khác nhau thế nào nhé: quét chọn từ trên xuống, quét chọn từ dưới lên.
      • ■ dataGridView1.Rows[index].Cells[col].Value; để lấy dữ liệu. index kết quả của bước trên, col là số thứ tự của cột (tính từ 0). Ví dụ:Stt:0, Tên:1, Họ tên:2. Dữ liệu trả về dưới dạng string nên bạn cần convert sang kiểu thích hợp
      • ■ 1 góp ý nhỏ có thể có ích cho chương trình của bạn. Bạn không nên dùng button Sửa, vì mỗi lần muốn sửa cái nào phải click lại mất công lắm và cũng không khoa học, thêm vào event CellClick để mỗi khi click vào 1 cell bất kỳ trong datagridview thì dữ liệu được load lên mấy control kia luôn, như vậy chắc hay hơn.

      Chúc bạn làm tốt, chào bạn! :)

  • Dương Thủy

    Mình có một Gridview hiển thị danh sách tài khoản gồm có: Tên đăng nhập và mật khẩu. Mình muốn tất cả dữ liệu trong Cột Mật Khẩu là chấm tròn hoặc sao (*)…miễn sao ko phải là text để người ta biết được thì mình phải làm sao?

  • Dương Thủy

    Mình muốn hập liệu trên datagridview lun. rùi nhấn nút save để lưu xuống cơ sở dữ liệu sql, cho mình hỏi có được k, nếu được thì hướng dẫn giúp mình nhé. Mình cảm ơn!

    • microsofttech.net

      Chào bạn!

      Vấn đề bạn nêu trên có thể thực hiện rất bình thường. Chúng ta rất dễ dàng trong việc lấy dữ liệu từ datagridview, còn việc lưu xuống database thì tùy theo database bạn sử dụng sẽ có phương pháp thực hiện cụ thể.

      Chúc bạn thành công! :)

  • Luong

    Admin cho hỏi sao mình làm như trên mà không thấy hiển thị dữ liệu lên DataGridview trên form nhỉ?

  • Luong

    tức là không có các giá trị trong hàng cột mình tạo ra khi thử chạy ấy mà grid bị trống
    :((

    • microsofttech.net

      Có phải bạn đổ dữ liệu vào datagridview mà ko được phải ko?
      Với datagridview bạn có thể dễ dàng thiết lập/ lấy giá trị của 1 cell bất kỳ thông qua chỉ số hàng và cột.

  • Luong

    tức là sau bước Rows.Add() làm như ở trên nhưng khi chạy thử thì trong Gridview không có gì cả.bạn có thể gửi mình file mẫu được không?thank trước nhé!

  • Nguyễn Văn Thành

    admin ơi mình mới học csharp,mình làm như bạn nhưng ở dòng 17 mục 3.Xử lý cột trong Code lại hiện thế này: “Cannot implicitly convert type ‘System.Windows.Forms.DataGridTextBoxColumn’ to’System.Windows.Forms.DataGridViewColumn’”
    admin có thể hướng dẫn thêm cho mình được không ạ,cảm ơn nhiều!

  • Bài viết rất hay và hữu ích! Cảm ơn bạn! :)

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>