Từ 1 tới 5 trên tổng số 5 kết quả

Đề tài: Kiểm Tra ô Rỗng trong datagirdview bằng cách nào?

  1. #1
    Ngày gia nhập
    02 2009
    Bài viết
    21

    Mặc định Kiểm Tra ô Rỗng trong datagirdview bằng cách nào?

    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.

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

    Bạn dùng event RowValidating để làm việc đó

    Visual C# Code:
    1. private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
    2.         {
    3.             if (e.RowIndex > -1 & e.ColumnIndex > -1)
    4.             {
    5.                 if (string.IsNullOrEmpty(dataGridView1[0, e.RowIndex].FormattedValue.ToString()))
    6.                 {
    7.                     MessageBox.Show("Product Name must not be empty");
    8.                     dataGridView1.CurrentCell = dataGridView1[0, e.RowIndex];
    9.                     e.Cancel = true;
    10.                 }
    11.             }
    12.         }

  3. #3
    Ngày gia nhập
    02 2009
    Bài viết
    21

    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);
        }
            }

  4. #4
    Ngày gia nhập
    06 2011
    Bài viết
    93

    Bạn chĩ check cột đầu thôi thì đâu cần for loop cho column làm chi.

    Visual C# Code:
    1. private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
    2.         {
    3.             try
    4.             {
    5.             if (e.RowIndex > -1 & e.ColumnIndex > -1)
    6.             {
    7.                 if (string.IsNullOrEmpty(dataGridView1[0, e.RowIndex].FormattedValue.ToString()))
    8.                 {
    9.                     MessageBox.Show("Mã đội không được phép rỗng");
    10.                     dataGridView1.CurrentCell = dataGridView1[0, e.RowIndex];
    11.                     e.Cancel = true;
    12.                 }
    13.            
    14.             for (int row = 0; row < dataGridView1.Rows.Count; row++)
    15.             {
    16.                     if (dataGridView1.Rows[row].Cells[0].Value != null && dataGridView1.Rows[e.RowIndex].Cells[0].Value != null &&                  dataGridView1.Rows[row].Cells[0].Value.Equals(dataGridView1.Rows[e.RowIndex].Cells[0].Value))
    17.                     {
    18.                         MessageBox.Show("Trùng khóa");
    19.                         e.Cancel = true;
    20.                     }
    21.             }
    22.         }
    23.         }
    24.         catch(Exception ex)
    25.     {
    26.         MessageBox.Show(ex.Message);
    27.     }
    28.         }

  5. #5
    Ngày gia nhập
    02 2009
    Bài viết
    21

    cảm ơn bạn rất nhiều. mình ko thấy nút thanks đâu cả!

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

  1. ADO.NET Lọc giữ liệu trong datagirdview bằng combobox
    Gửi bởi oosmileoo trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 30-10-2012, 09:51 AM
  2. ADO.NET Truyền dữ liệu từ DatagirdView sang DatagirdView khác như thế nào?
    Gửi bởi anhbaoaccp trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 12-07-2011, 12:41 PM
  3. Chỉnh kích thước dataGirdView trong lập trình C#?
    Gửi bởi I Waiting You trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 14-03-2011, 03:49 PM
  4. Không cập nhật được dữ liệu trong datagirdview
    Gửi bởi NghiDung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 22-04-2010, 03:03 PM
  5. Cách đổi màu của dòng được lựa chọn trong DataGirdView
    Gửi bởi NghiDung trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 14-03-2010, 03:57 AM

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