private void ThemMon(object sender, EventArgs e) { ListView lsv = LayMenuMon(); if (radMenuMon.Checked) { if (lsv.SelectedItems.Count == 1) { MonDTO mon = (MonDTO)lsv.SelectedItems[0].Tag; DataGridViewRow rowMon = new DataGridViewRow(); rowMon.DefaultCellStyle.BackColor = Color.AliceBlue; rowMon.DefaultCellStyle.Font = new Font("Arial", 11.25F, FontStyle.Bold); rowMon.Height = 50; rowMon.Tag = mon; rowMon.Cells.Add(new DataGridViewTextBoxCell { Value = mon.TenMon }); rowMon.Cells.Add(new DataGridViewTextBoxCell { Value = 1 }); rowMon.Cells.Add(new DataGridViewTextBoxCell { Value = mon.GiaTien.ToString("#,###đ") }); if (MonBUS.KiemTraMonLaNuocUong(mon.LoaiMon)) { rowMon.Cells.Add(new DataGridViewTextBoxCell { Value = "Đá: 50%\nĐường: 50%" }); } // Thêm món vào hoá đơn nếu hoá đơn chưa có món nào if (dgvHoaDon.Rows.Count == 0) { dgvHoaDon.Rows.Add(rowMon); TinhThanhTien(); lblThanhTien.Text = TinhThanhTien().ToString("#,##0đ"); btnThanhToan.Enabled = true; btnThanhToan.BackColor = Color.LimeGreen; return; } //// Duyệt qua toàn bộ danh sách hoá đơn //foreach (DataGridViewRow rowHD in dgvHoaDon.Rows) //{ // if (rowHD.Tag.GetType() == typeof(MonDTO)) // { // // Tăng số lương món trong hoá đơn nếu hoá đơn đã có món đó // if (((MonDTO)rowHD.Tag).MaMon == mon.MaMon) // { // int soLuong = Convert.ToInt32(rowHD.Cells["colSoLuong"].Value); // rowHD.Cells["colSoLuong"].Value = soLuong + 1; // TinhThanhTien(); // return; // } // } //} //// Thêm món vào hoá đơn nếu hoá đơn chưa có món đó //dgvHoaDon.Rows.Add(rowMon); //lblThanhTien.Text = TinhThanhTien().ToString("#,##0đ");\ bool added = false; // Duyệt qua toàn bộ danh sách hoá đơn for (int i = 0; i < dgvHoaDon.Rows.Count; i++) { DataGridViewRow rowHD = dgvHoaDon.Rows[i]; if (rowHD.Tag.GetType() == typeof(MonDTO)) { // Kiểm tra dòng i có trùng món đang thêm không if (((MonDTO)rowHD.Tag).MaMon == mon.MaMon) { // Kiểm tra dòng tiếp theo có hay không if (i + 1 == dgvHoaDon.Rows.Count) { int soLuong = Convert.ToInt32(rowHD.Cells["colSoLuong"].Value); rowHD.Cells["colSoLuong"].Value = soLuong + 1; TinhThanhTien(); dgvHoaDon.CurrentCell = rowHD.Cells[0]; return; } else { // Nếu dòng i có topping thì kiểm tra tiếp if (dgvHoaDon.Rows[i + 1].Tag.GetType() == typeof(ToppingDTO)) { continue; } // Nếu dòng i không có topping thì tăng số lượng else { int soLuong = Convert.ToInt32(rowHD.Cells["colSoLuong"].Value); rowHD.Cells["colSoLuong"].Value = soLuong + 1; TinhThanhTien(); dgvHoaDon.CurrentCell = rowHD.Cells[0]; added = true; break; } } } } } // Thêm món vào hoá đơn nếu không có thao tác nào trong câu lệnh trên if (!added) { dgvHoaDon.Rows.Add(rowMon); dgvHoaDon.CurrentCell = rowMon.Cells[0]; lblThanhTien.Text = TinhThanhTien().ToString("#,##0đ"); } } } }