Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 13 kết quả

Đề tài: Kiểm tra dữ liệu trùng trong datagridview khi được khi không? (8-)>

  1. #1
    Ngày gia nhập
    08 2011
    Bài viết
    38

    Mặc định Kiểm tra dữ liệu trùng trong datagridview khi được khi không? (8-)>

    Mình có đoạn code kiểm tra dữ liệu trùng khi add thêm sản phẩm vào datagrid, tuy nhiên có 1 điều là khi bấm "chậm chậm" nút Add thì nếu dữ liệu trùng sẽ thông báo "Sản phẩm đã có rồi", nhưng nếu bấm "nhanh nhanh" nút Add thì nó cứ add vào đến cái thứ 5, 6 mới báo "Sản phẩm đã có rồi"
    Ai biết nguyên nhân vì sao ko?? Hay vì máy chạy chậm quá, bộ xử lý ko kịp
    Thanks
    C# một phần tất yếu của cuộc sống
    Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
    <@ Bản đồ dẫn đường - Click here @>

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

    Hàm ktra của bạn thế nào ta???

    Bạn ghi nó vào sự kiện j?

    Lần đầu tiên gặp trường hợp như bạn đó!!

    cũng có khi do máy ^^!

  3. #3
    Ngày gia nhập
    03 2011
    Bài viết
    124

    Bạn kiểm tra lại code đi, do code chưa đúng thôi.
    Chia sẻ là học hỏi

  4. #4
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hix. Nếu máy bạn chạy chậm thì khi click cái là bạn ngay lập tức cho Enable=false để ko kích tiếp được nữa. Khi cái công việc xử lý cho cái click kia hoàn tất thì bạn cho Enable=true để có thể click được tiếp.Thử xem.

  5. #5
    Ngày gia nhập
    08 2011
    Bài viết
    38

    Trích dẫn Nguyên bản được gửi bởi linhgl88 Xem bài viết
    Hàm ktra của bạn thế nào ta???

    Bạn ghi nó vào sự kiện j?

    Lần đầu tiên gặp trường hợp như bạn đó!!

    cũng có khi do máy ^^!
    Code của mình đây, đại khái là vậy
    Code:
    private void btnAdd_Click(object sender, EventArgs e)
            {
                int currentSanPhamId = (int)cbbMaSP.SelectedValue;
                if (ExistedInSanPhamDuocChon(currentSanPhamId))
                {
                    MessageBox.Show("Sản phẩm đã có trong danh sách");
                }
                else
                {
                    if (cbbMaSP.Text == "" || cbbTenSP.Text == "")
                    {
                        MessageBox.Show("Không có Sản phẩm được chọn", "Thong bao");
                        cbbMaSP.Focus();
                    }
                    else
                    {
                        if (txtSoLuong.Text == "")
                        {
                            MessageBox.Show("Nhập Số lượng sản phẩm cần mua", "Thong bao");
                            txtSoLuong.Focus();
                        }
                        else
                        {
    
                            if (cbbTenKH.Text == "")
                            {
                                MessageBox.Show("Chọn tên Khách hàng.", "Thong bao");
                                cbbTenKH.Focus();
                            }
                            else
                            {
                                int indexCurr2 = Program._indexCurr2;
                                DataRow currentDataRow = GetRowFromSanPham(currentSanPhamId);
                                if (currentDataRow != null)
                                {
    
                                    DataRow dr = dtSanPhamChon.NewRow();
                                    dr[0] = txtCurrentIndex.Text;  // ("Stt")
                                    dr[1] = currentDataRow[1];  // ("Mã SP")
                                      ...............
    C# một phần tất yếu của cuộc sống
    Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
    <@ Bản đồ dẫn đường - Click here @>

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

    Mặc định Kiểm tra dữ liệu trùng trong datagridview khi được khi không? (8-)>

    Bạn làm if ...else lòng nhau chằn chịt wa!!!

    Nhìn ngộp thật!!! hic


    Sao bạn ko làm thế này nhỉ
    Visual C# Code:
    1. if (!ExistedInSanPhamDuocChon(currentSanPhamId))
    2.           if (cbbMaSP.Text != "")
    3.                 if (txtSoLuong.Text != "")
    4.                     if(cbbTenKH.Text !="")
    5.                         {
    6.                          // Thực thi câu lệnh trong này!!!
    7.                          }
    8.                      else
    9.                         { MessageBox.Show("Chọn tên Khách hàng.", "Thong bao");
    10.                             cbbTenKH.Focus();
    11.                          }
    12.                 else
    13.                    {
    14.                         MessageBox.Show("Nhập Số lượng sản phẩm cần mua", "Thong bao");
    15.                         txtSoLuong.Focus();
    16.                     }
    17. .....
    Nhìn của bạn ko có sai nhưng hơi rối!!!
    Thế này nhìn sẽ gọn hơn đó ^^! hic.

  7. #7
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hix! bạn viết 5 tầng if ác quá. Vừa vất vả vừa khó xem.he. Thử bỏ 3 cấp ngoài cùng bằng cách sử dụng Return thế này xem. Bên dưới xử lý nhiều thì vô hiệu hóa tên btnAdd đi.Chẳng hạn:

    private void btnAdd_Click(object sender, EventArgs e)
    {
    int currentSanPhamId = (int)cbbMaSP.SelectedValue;
    if (ExistedInSanPhamDuocChon(currentSanPhamId))
    {
    MessageBox.Show("Sản phẩm đã có trong danh sách");
    return;
    }

    if (cbbMaSP.Text == "" || cbbTenSP.Text == "")
    {
    MessageBox.Show("Không có Sản phẩm được chọn", "Thong bao");
    cbbMaSP.Focus();
    return;
    }

    if (txtSoLuong.Text == "")
    {
    MessageBox.Show("Nhập Số lượng sản phẩm cần mua", "Thong bao");
    txtSoLuong.Focus();
    return;
    }

    //vo hieu hoa btn add: de khong click dc nua khi chua xu ly xong
    btnAdd.Enable=false;
    if (cbbTenKH.Text == "")
    {
    MessageBox.Show("Chọn tên Khách hàng.", "Thong bao");
    cbbTenKH.Focus();
    }
    else
    {
    int indexCurr2 = Program._indexCurr2;
    DataRow currentDataRow = GetRowFromSanPham(currentSanPhamId);
    if (currentDataRow != null)
    {

    DataRow dr = dtSanPhamChon.NewRow();
    dr[0] = txtCurrentIndex.Text; // ("Stt")
    dr[1] = currentDataRow[1]; // ("Mã SP")

    ................
    //cho btnAdd tro lai hoat dong
    btnAdd.Enable=true;
    }//end of click event

    Như thế thì bạn chỉ còn if ở dạng 2 tầng thui. cho thoáng mát. Chứ mùa hè mà viết như bạn thì chết nóng.hihi

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    À!Nhân tiện mình hỏi luôn.hơi ngoài lề chút.
    Sao mình viết code có căn lề thụt thò phân cấp. Nhưng lúc "Gửi trả lời" nó lại căn trái hết nhỉ? Làm thế nào để viết giữ nguyên được vậy các bác.hihi. Mình mới tham gia nên chưa biết.thanks

  9. #9
    Ngày gia nhập
    08 2011
    Bài viết
    38

    Trích dẫn Nguyên bản được gửi bởi linhgl88 Xem bài viết
    Bạn làm if ...else lòng nhau chằn chịt wa!!!

    Nhìn ngộp thật!!! hic


    Sao bạn ko làm thế này nhỉ
    Visual C# Code:
    1. if (!ExistedInSanPhamDuocChon(currentSanPhamId))
    2.           if (cbbMaSP.Text != "")
    3.                 if (txtSoLuong.Text != "")
    4.                     if(cbbTenKH.Text !="")
    5.                         {
    6.                          // Thực thi câu lệnh trong này!!!
    7.                          }
    8.                      else
    9.                         { MessageBox.Show("Chọn tên Khách hàng.", "Thong bao");
    10.                             cbbTenKH.Focus();
    11.                          }
    12.                 else
    13.                    {
    14.                         MessageBox.Show("Nhập Số lượng sản phẩm cần mua", "Thong bao");
    15.                         txtSoLuong.Focus();
    16.                     }
    17. .....
    Nhìn của bạn ko có sai nhưng hơi rối!!!
    Thế này nhìn sẽ gọn hơn đó ^^! hic.
    Mình còn đang giai đoạn học hỏi nên rất cám ơn bạn đã hướng dẫn tối ưu hóa code
    Còn việc giải quyết lỗi phát sinh ko kiểm tra "kịp" đó thế nào mọi người
    C# một phần tất yếu của cuộc sống
    Cà phê xem phim 3D Đà Nẵng - http://3dsmartcoffee.com.vn
    <@ Bản đồ dẫn đường - Click here @>

  10. #10
    Ngày gia nhập
    12 2010
    Bài viết
    683

    Trích dẫn Nguyên bản được gửi bởi philipdn Xem bài viết
    Mình có đoạn code kiểm tra dữ liệu trùng khi add thêm sản phẩm vào datagrid, tuy nhiên có 1 điều là khi bấm "chậm chậm" nút Add thì nếu dữ liệu trùng sẽ thông báo "Sản phẩm đã có rồi", nhưng nếu bấm "nhanh nhanh" nút Add thì nó cứ add vào đến cái thứ 5, 6 mới báo "Sản phẩm đã có rồi"
    Thú vị thật! có vụ nhanh nhanh, chậm chậm khi click vô button nữa hả????

    Mình gợi ý nha!
    Tạo hàm check trùng

    Tạo một cái check mã chẳng hạn!!!

    Rồi cho cái for duyệt qua từng rows rồi bỏ điều kiện là cái chuỗi trùng với rows[i].cells[1] chẳng hạn vô for đó-->break;

    return true; chẳn hạn

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

  1. ADO.NET Kiểm tra dữ liệu trùng lặp ngay trên Datagridview khi thêm, sửa??
    Gửi bởi nightmare1111 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 26-02-2012, 12:59 PM
  2. ADO.NET Cách kiểm tra dữ liệu trùng lặp khi chọn combobox trong datagridview
    Gửi bởi dangngocthanh trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 17-12-2011, 12:56 AM
  3. Dữ liệu datagridview không trùng nhau!
    Gửi bởi sonsonsonson trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 32
    Bài viết cuối: 15-08-2011, 01:03 PM
  4. Kiểm tra trùng lặp dữ liệu trên DataGridView trong lập trình C#?
    Gửi bởi AirBlade trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 21-04-2011, 10:57 PM
  5. dữ liệu hiển thị trùng nhau trong datagridview
    Gửi bởi nh0cbilly trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 7
    Bài viết cuối: 10-12-2010, 10:14 PM

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