Ngôn ngữ ASP.NET - Tổng quan GridView

Đối tượng dữ liệu GridView

GridView có lẽ là một điều khiển trình diễn dữ liệu quan trọng nhất của ASP.NET. Nó cho phép gắn và hiển thị dữ  liệu ở dạng bảng, trong đó mỗi hàng là một bản ghi, mỗi cột ứng  với một trường dữ liệu. Ngoài việc hiển thị, GridView còn có rất nhiều tính năng khác mà trước đây người ta phải viết rất nhiều dòng code mới có được, Thí dụ:  Định  dạng,  phân  trang, sắp xếp, sửa đổi, xóa dữ liệu.
GridView có thể gắn kết dữ liệu với các nguồn như DataReader, SqlDataSource, ObjectDataSource hay bất kỳ nguồn nào có cài đặt System.CollectionsEnumerable.
1. Các thuộc tính và cột thuộc tính
GridView ngoài việc hiển thị thuần túy các trường của một nguồn dữ liệu, nó còn cho phép hiển thị dưới các hình thức khác (Thí dụ dưới dạng nút, dạng HyperLink, dạng checkbox…), các cột khác bổ trợ cho việc thao tác dữ liệu như Select, Update, Delete hoàn toàn có thể tùy biến trong GridView.
Để chỉnh sửa các cột dạng này, click chọn "smart tag" của GridView và chọn "Edit Field" hoặc chọn thuộc tính Columns của GridView trong cửa sổ thuộc tính.

Loại cột Mô tả
BoundField Hiển thị giá trị của một trường thuộc nguồn dữ liệu.
ButtonField Hiển thị một nút lệnh cho mỗi mục trong GridView. Nút này cho phép bạn có thể tạo ra các nút tùy biến kiểu như Add hay Remove.
CheckBoxField Hiển thị một checkbox ứng với mỗi mục trong GridView. Cột này thường được dùng để hiển thị các trường kiểu Boolean (Yes/No).
CommandField Hiển thị các nút lệnh đã được định nghĩa sẵn để thực hiện các thao tác select, edit, hay delete.
HyperLinkField Hiển thị giá trị của một trường dưới dạng siêu liên kết (hyperlink). Loại cột này cho phép bạn gắn một trường thứ hai vào URL của siêu liên kết.
ImageField Hiển thị một ảnh ứng với mỗi mục trong GridView.
TemplateField Hiển thị một ảnh ứng với mỗi mục trong GridView.
2. Các thuộc tính
Thuộc tính Mô tả
GridLines Ẩn, hiện các đường viền của GridView.
ShowHeader Cho phép Hiện/ ẩn phần Header
ShowFooter Cho phép Hiện/ ẩn phần Footer
PageSize Get/Set cho biết mỗi trang chứa bao nhiêu dòng.
PageCount Cho biết số trang của nguồn dữ liệu mà nó gắn kết
PageIndex Get/Set chỉ số của trang đang được hiển thị
AllowPaging Có cho phép phân trang không ( true = có)
AllowSorting Có cho phép sắp xếp không (true=có)
AutoGenerateColumns Có tự động sinh ra các cột ứng với các cột trong nguồn dữ liệu hay không ? Mặc định = true (có)
AutoGenerateDeleteButton Tự động tạo ra cột Delete (true = tự động)
AutoGenerateUpdateButton Tự động tạo ra cột Update (true = tự động)
AutoGenerateSelectButton Tự động tạo ra cột Select (true = tự động)
EditIndex (SelectedIndex) Đặt hàng nào đó về chế độ edit. EditIndex = 2 hàng thứ 3 (chỉ số 2) sẽ về chế độ edit. Nếu đặt EditIndex = -1 thì sẽ thoát khỏi chế độ Edit.
SelectedIndex Trả về chỉ số của dòng đang chọn
Rows Một tập hợp chứa các hàng của GridView.
Columns Một tập hợp chứa các cột của GridView.
3. Các style áp dụng cho GridView
GridView rất linh hoạt trong việc trình bày dữ liệu, nó cho phép ta định dạng các phần thông qua style. Thí dụ ta có thể định dạng cho phần Header, Footer, các mục dữ liệu, các hàng chẵn-lẻ v.v… Bảng dưới đây sẽ giải thích rõ ý nghĩa một số thuộc tính:
Thuộc tính style Mô tả
AlternatingRowStyle Style áp dụng cho các hàng dữ liệu chẵn-lẻ trong GridView. Khi đặt thuộc tính này thì các hàng sẽ được hiển thị với định dạng luân
phiên giữa RowStyleAlternatingRowStyle.
EditRowStyle Style để hiển thị hàng hiện đang được sửa (Edit).
FooterStyle Style áp dụng cho phần Footer.
HeaderStyle Style áp dụng cho phần Header.
PagerStyle Style áp dụng cho phần phân trang (các trang << 1 2 3 … >>).
RowStyle Style áp dụng cho các hàng dữ liệu trong GridView control. Khi AlternatingRowStyle được thiết lập thì sẽ áp dụng luân phiên giữa RowStyle và AlternatingRowStyle.
SelectedRowStyle Style áp dụng cho hàng đang được chọn (Selected)của GridView.
4. Các sự kiện GridView
có rất nhiều sự kiện quan trọng, các sự kiện này khi kích hoạt sẽ cung cấp cho ta những thông tin hữu ích trong quá trình xử lý. Thí dụ, khi chúng ta click nút Update, nó sẽ kích hoạt sự kiện Updating và trả về cho chúng ta các giá trị mà người dùng vừa sửa…. Dưới đây là bảng tổng hợp một số sự kiện hay dùng nhất:
Tên sự kiện Mô tả
PageIndexChanged Xuất hiện khi ta click chọn các nút ( << 1 2 3 >>) trong hàng phân trang.
PageIndexChanging Xuất hiện khi người dùng click chọn các nút ( << 1 2 3 >>) trong hàng phân trang nhưng TRƯỚC khi GridView thực hiện việc
RowCancelingEdit Xuất hiện khi nút Cancel được click nhưng trước khi thoát khỏi chế độ Edit.
RowCommand Xuất hiện khi một nút được click.
RowCreated Xuất hiện khi một hàng mới được tạo ra. Thường được sử dụng để sửa nội dung của hàng khi nó vừa được tạo ra.
RowDataBound Xuất hiện khi một hàng dữ liệu được gắn vào GridView. Tại đây ta có thể sửa đổi nội dung của hàng đó.
RowDeleted Xuất hiện khi nút Delete của một hàng được click, nhưng sau khi GridView đã delete bản ghi từ nguồn.
RowDeleting Xuất hiện khi nút Delete được click nhưng trước khi GridView xóa bản ghi từ nguồn. Tại đây có thể Cancel việc Delete.
RowEditing Xuất hiện khi nút Edit được click, nhưng trước khi GridView về chế độ sửa.
RowUpdated Xuất hiện khi nút Update được click, nhưng sau khi GridView update hàng dữ liệu.
RowUpdating Xuất hiện khi nút Update được click, nhưng trước khi GridView update hàng dữ liệu.
SelectedIndexChanged Xuất hiện khi nút Select của hàng được click nhưng sau khi GridView xử lý xong thao tác Select.
SelectedIndexChanging Xuất hiện khi nút Select của hàng được click nhưng trước khi GridView xử lý xong thao tác Select.
Sorted Xuất hiện khi Hyperlink (tiêu đề cột) được click, nhưng sau khi GridView thực hiện việc sắp xếp.
Sorting Xuất hiện khi Hyperlink (tiêu đề cột) được click, nhưng trước khi GridView thực hiện việc sắp xếp.
Sự kiện này khi xảy ra, nó sẽ cung cấp cho chúng ta thông tin về tên cột vừa được click. Dựa vào đó ta có thể thực hiện việc sắp xếp một cách dễ dàng.
5. Các phương thức
Tên phương thức Mô tả
DataBind() Gắn kết dữ liệu giữa GridView và nguồn dữ liệu (đặt các thuộc tính DataSource, DataTextField hoặc DataSourceID.
DeleteRow(int) Xóa một dòng trong GridView
UpdateRow(int i, bool Valid) Cập nhật một dòng trong GridView.
Sort(Biểu thức sx, hƣớng sx) Sắp xếp dựa trên biểu thức và hướng.