Bạn dùng event RowValidating để làm việc đó
Visual C# Code:
{ { { MessageBox.Show("Product Name must not be empty"); dataGridView1.CurrentCell = dataGridView1[0, e.RowIndex]; } } }
Các bro cho mình hỏi :
- Mình dùng even dataGridView1_RowValidated để insert vào database khi di chuyển chuột sang dòng khác trên datagirdview.
- Trong datagirdview có một cột bắt buộc nhập vào, mình dùng hàm DataError và dataGridView1_CellValidating để bắt lỗi nhập sai dữ liệu.
- Vấn đề là khi người dùng ko di chuyển chuột vào ô bắt buộc nhập dữ liệu mà chỉ nhập một số thông tin ở các ô khác rồi chuyển sang dòng khác.
Khi đó hàm insert dữ liệu sẽ bị lỗi.
Mình muốn hỏi là dùng hàm nào để bắt sự kiện này và bắt người dùng quay lại ô bắt buộc nhập đó để nhập dữ liệu vào.
xin cảm ơn.
Bạn dùng event RowValidating để làm việc đó
Visual C# Code:
{ { { MessageBox.Show("Product Name must not be empty"); dataGridView1.CurrentCell = dataGridView1[0, e.RowIndex]; } } }
Cám ơn bạn rất nhiều.Mình đã làm được rồi. À, cho mình hỏi thêm việc kiểm tra khóa chính khi thêm mới thì sao? . vì mình dùng vòng lặp để kiểm tra thì khi load form lên báo lỗi. Object reference not set to an instant of....
Code:private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e) { try { if (e.RowIndex > -1 & e.ColumnIndex > -1) { if (string.IsNullOrEmpty(dataGridView1[0, e.RowIndex].FormattedValue.ToString())) { MessageBox.Show("Mã đội không được phép rỗng"); dataGridView1.CurrentCell = dataGridView1[0, e.RowIndex]; e.Cancel = true; } for (int row = 0; row < dataGridView1.Rows.Count; row++) { for (int col = 0; col < dataGridView1.Columns.Count; col++) { if (dataGridView1.Rows[row].Cells[col].Value != null && dataGridView1.Rows[row].Cells[col].Value.Equals(dataGridView1.Rows[e.RowIndex].Cells[0].Value)) { MessageBox.Show("Trùng khóa"); e.Cancel = true; } } } } } catch(Exception ex) { MessageBox.Show(ex.Message); } }
Bạn chĩ check cột đầu thôi thì đâu cần for loop cho column làm chi.
Visual C# Code:
{ { { { MessageBox.Show("Mã đội không được phép rỗng"); dataGridView1.CurrentCell = dataGridView1[0, e.RowIndex]; } { { MessageBox.Show("Trùng khóa"); } } } } { MessageBox.Show(ex.Message); } }
cảm ơn bạn rất nhiều. mình ko thấy nút thanks đâu cả!