Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
V. DATAGRID VIEW
***
1. Chức năng
Điều khiển DataGridView dùng để hiển thị dữ liệu.
2. Một số thuộc tính thường dùng
Tên Ý nghĩa
AutoSizeColumnsMode Các kiểu lựa chọn với Cột (Đặt các chế độ khác nhau)
AutoSizeRowsMode Các kiểu lựa chọn với Hàng (Đặt các chế độ khác nhau)
BackGroundColor Chọn mầu nền cho DataGridView
BorderStyle Đặt kiểu đường viền ngoài bao quanh cho DataGridView
CellBorderStyle Đặt đường viền cho các ô
ColumnHeadersBorderStyle
ColumnHeadersHeight
ColumnHeadersVisible Nhận một trong hai giá trị True hay False
- True: Cho phép hiển thị tiêu đề các cột
- False: Không cho phép hiển thị tiêu để các cột
Columns Làm việc với cột (Đặt tiêu đề cho Headers, lựa chọn kiểu
cột (Checkbox, Button, Image…). → Trong DataGridView
một cột có thể là: Cột các Button, Cột các Checkbox…
DataMember Chọn cơ sở dữ liệu để hiển thị nên DataGridView
DataSource Chọn nguồn dữ liệu cho DataGridView (hai thuộc tính
DataSource và DataMember hay đi với nhau)
GridColor Chọn màu cho lưới (các hàng, các cột được ngăn cách nhau
bởi lưới)
MultiSelect Cho phép/Không cho phép chọn nhiều dòng?
ReadOnly Nhận một trong hai giá trị True hay False
- True: Cho phép thay đổi giá trị các các phần tử (các ô hay
các Cell).
- False: không cho phép thay đổi giá trị các phần tử.
RowHeadersBorderStyle Chọn kiểu viền cho các Hàng (Rows).
RowHeaderVisible Nhận một trong hai giá trị True hay False
- True: Cho phép hiển thị Headers của hàng(Cột đầu tiên ở
mép ngoài bên trái)
- False: Ngược lại
3. Một số sự kiện thường dùng
Tên Ý nghĩa
CellClick Xảy ra khi người dùng nhấn chọn một ô bất kì nào đó trên
DataGridView (tất nhiên DataGridView phải có dữ liệu)
Chú ý: Trong DataGridView thì khái niệm Ô ≡ Cell
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
………………………………
4. Một số khái niệm liên quan đến DataGridView
Hình 1: Ví dụ về DataGirdView
Hình 2: Khái niệm Columns trong DataGridView
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
Hình 3: Khái niệm về Rows trong DataGridView
Hình 4: Khái niệm về Cells trong DataGridView
→ DataGridView ≡ Mảng 2 chiều
→ Có 2 cách để truy xuất đến một ô (để lấy giá trị) trong DataGridView (các bạn chú ý hai câu lệnh này)
Cách 1: Tên_DataGridView[Chỉ_số_cột, Chỉ_số_hàng].Value
Cách 2: Tên_DataGridView.Rows[Chỉ_số_hàng].Cells[Chỉ_số_Cột].Value
Ví dụ:
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
Có một DataGridView như sau:
Chúng ta muốn lấy giá trị của một ô bôi đen (Phạm Thị Hạnh) chúng ta
có thể sử dụng câu lệnh sau (tên của DataGridView là: dgSinhVienTK4):
string str = dgSinhVienTK4[0, 2].Value.ToString();
Hoặc
string str = dgSinhVienTK4.Rows[2].Cells[0].Value.ToString();
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
5. Sử dụng điều khiển DataGridView qua một số Code
Giả sử chúng ta có một form có tên: frmDataGridView. Trên đó có chứa một số điều khiển sau:
• Điều khiển DataGridView có tên dataGridView1(Chúng ta để tất cả các thuộc tính của dataGridView1với giá trị mặc định).
• Button btCreate: minh họa việc tạo DataGridView với số hàng và số cột xác định
• Button btRemove: Minh họa xóa một cột, một hàng trong DataGridView
• Button btGet: Minh họa việc lấy số hàng và số cột trong DataGridView
• Button btAddCombobox: Minh họa việc Add một cột là Combobox vào DataGridView
• Button btAddCheck: Minh họa việc Add một cột là Checkbox vào DataGridView
Giao diện của chương trình như sau:
Chúng ta sẽ minh họa sử dụng DataGridView qua sự kiện Click của các button trên.
5.1. Tạo các cột trong DataGridView (bằng Code)
//Sự kiện Load của Form
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
private void frmDataGridView_Load(object sender, EventArgs e)
{
//Đặt thuộc tính cho DataGridView thông qua mã lệnh
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Chú ý thuộc tính này
//Để thêm các cột vào DataGridView bạn có thể thêm thông qua thuộc tính COLUMNS trên hộp thoại Properties
//Hoặc bạn có thể thêm bằng Code
dataGridView1.Columns.Add("clName", "Họ và Tên");
dataGridView1.Columns.Add("clQueQuan", "Quê quán");
dataGridView1.Columns.Add("clLop", "Lớp");
dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");
//Thêm một hàng mới vào (hàng mới này chưa có dữ liệu gì)
dataGridView1.Rows.Add();
//Đưa dữ liệu vào hàng mới vừa tạo ra (Đặt giá trị cho một ô) -> Các bạn chú ý có hai cách như thế này
dataGridView1[0, 0].Value = "Nguyễn Văn Hải";
dataGridView1.Rows[0].Cells[1].Value = "Hưng Yên";
dataGridView1[2, 0].Value = "TK4N1";
dataGridView1.Rows[0].Cells[3].Value = "29-03-1987";
} //Hết
→ sau khi chạy chương trình: form frmDataGridView sẽ có kết quả như sau:
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
5.2. Đặt số hàng và số cột cho DataGridView
//Sự kiện Load của Form
private void btCreate_Click(object sender, EventArgs e)
{
//Đặt số hàng và số cột cho DataGridView (Ví dụ: thiết kế trong chơi cờ Caro)
//Ví dụ: Tạo một DataGridView với 50 hàng và 50 Cột
dataGridView1.ColumnCount = 50; //Chú ý thuộc tính này
dataGridView1.RowCount = 50; //Chú ý thuộc tính này
//Thiết lập độ rộng cho các Ô
for (int i = 0; i < 50; i++)
{
dataGridView1.Columns[i].Width = 15;
dataGridView1.Rows[i].Height = 15;
}
} //Đã xong rồi. Giờ thì bạn chạy xem nào
5.3. Xóa một hàng (hay 1 cột, hay tất cả các hàng các cột) của DataGridView
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
private void brRemove_Click(object sender, EventArgs e)
{
//Tập các hàng, các cột trong DataGridView là một Collection
//Nên nó có đầy đủ các thuộc tính và phương thức của một Collection
//Xóa hàng thứ 1 (có chỉ số là 0)
dataGridView1.Rows.RemoveAt(0); //Xóa tất cả các hàng: dataGridView1.Rows.Clear();
//Tất nhiên nếu chúng ta có 2 hàng thì chúng ta không thể thực hiện câu lệnh: dataGridView1.Rows.RemoveAt(2);
//Xóa cột thứ 2 (có chỉ số là 1)
dataGridView1.Columns.RemoveAt(1); //Xóa tất cả các Cột: dataGridView1.Columns.Clear();
}
Rows ↔ Collection
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
Columns ↔ Collection
5.4. Lấy về số hàng và số cột hiện có của DataGridView
private void btGet_Click(object sender, EventArgs e)
{
//Lấy về số hàng và số cột
int i = dataGridView1.Rows.Count; //Lấy về số hàng
int j = dataGridView1.Columns.Count;//Lấy về số cột
//Thông báo
string HC = "Số hàng: " + i.ToString() +'\n' + "Số cột: " + j.ToString();
MessageBox.Show(HC);
}
5.5. Add thêm một cột là Combobox vào DataGridView
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
private void frmDataGridView_Load(object sender, EventArgs e)
{
//Đặt thuộc tính cho DataGridView thông qua mã lệnh
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Chú ý thuộc tính này
//Để thêm các cột vào DataGridView bạn có thể thêm thông qua thuộc tính COLUMNS trên hộp thoại Properties
//Hoặc bạn có thể thêm bằng Code
dataGridView1.Columns.Add("clName", "Họ và Tên");
dataGridView1.Columns.Add("clQueQuan", "Quê quán");
dataGridView1.Columns.Add("clLop", "Lớp");
dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");
//Thêm một hàng mới vào (hàng mới này chưa có dữ liệu gì)
dataGridView1.Rows.Add();
//Đưa dữ liệu vào hàng mới vừa tạo ra (Đặt giá trị cho một ô) -> Các bạn chú ý có hai cách như thế này
dataGridView1[0, 0].Value = "Nguyễn Văn Hải";
dataGridView1.Rows[0].Cells[1].Value = "Hưng Yên";
dataGridView1[2, 0].Value = "TK4N1";
dataGridView1.Rows[0].Cells[3].Value = "29-03-1987";
}
//Phương thức đưa dữ liệu vào Combobox
private static void AddData(ref DataGridViewComboBoxColumn comboboxColumn)
{
{
comboboxColumn.Items.AddRange(
new string[] { "SV1", "SV2", "SV3"});
}
}
// Add thêm một cột là Combobox vào DataGridView!!!
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
private void btAddCombobox_Click(object sender, EventArgs e)
{
//Khai báo mảng làm DataSource cho Combobox
string[] Mang = { "SV1", "SV2", "SV3" };
//Khai báo một cột thuộc kiểu Combobox
DataGridViewComboBoxColumn comboboxColumn = new DataGridViewComboBoxColumn();
//Đặt thông số và đưa dữ liệu vào Combobox
comboboxColumn.HeaderText = "Cột Combobox";
AddData(ref comboboxColumn);// Câu lệnh này<->comboboxColumn.DataSource = Mang;
//Câu lệnh Insert này đưa cột vào vị trí đầu của DataGridView
dataGridView1.Columns.Insert(0, comboboxColumn);
// Add một cột vào vị trí cuối cùng của DataGridView (Chưa có dữ liệu).
comboboxColumn = new DataGridViewComboBoxColumn();
comboboxColumn.HeaderText = "Cột Combobox ";
dataGridView1.Columns.Add(comboboxColumn);
//Sử dụng phương thức Add mà chưa có thông số comboboxColumn.DisplayIndex = 3;
//Thì mặc định đưa vào cuối DataGridView còn nếu có
//comboboxColumn.DisplayIndex = 3; thì đưa vào cột 3
}
→ Sau khi chạy có kết quả như sau:
Chuyên đề 02: Công nghệ .NET
GV: Hoàng Quốc Việt
5.5. Add thêm một cột là Checkbox vào DataGridView
//Sự kiện Load của Form
private void frmDataGridView_Load(object sender, EventArgs e)
{
//Đặt thuộc tính cho DataGridView thông qua mã lệnh
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;//Chú ý thuộc tính này
//Để thêm các cột vào DataGridView bạn có thể thêm thông qua thuộc tính COLUMNS trên hộp thoại Properties
//Hoặc bạn có thể thêm bằng Code
dataGridView1.Columns.Add("clName", "Họ và Tên");
dataGridView1.Columns.Add("clQueQuan", "Quê quán");
dataGridView1.Columns.Add("clLop", "Lớp");
dataGridView1.Columns.Add("clNgaySinh", "Ngay sinh");
//Thêm một hàng mới vào (hàng mới này chưa có dữ liệu gì)
dataGridView1.Rows.Add();