I have 2 table on api data: Booking{ Id, Status, Sort, CreatedDate,UpdatedAt, Title, ParticipatingLeaders, Content, UserCreatedName, UserCreatedEmail, UserCreatedPhoneNumber, DepartmentId, Start, Stop, LocationId, Request,RoomId, Date, CancelAt, SuccessAt,HostUser, LocationName, RoomName }
Room{ Id, Status, Sort, CreatedDate, CreatedAt, UpdatedAt, UpdatedBy, CodeNaame, Name, LocationId, Volumn, Items, Images }
After booking and save the meeting room, the data will be submitted to the Booking table. on form i create datagridview to view
meeting schedule and meeting room get the list of rooms in the Room api table and add new hour columns
add a new column that is the time and get the data to browse the Booking table to compare the start time and end time of the meeting
like code and picture. convert columns header is hour to compare and get the time range and load the color to know which room is meeting at which time
in the load event call the function: selectAreaColor() then got an error, but the load function does not call and book the room,
it can run and get the results as shown, but when starting to run and the load function calls, the error hope everyone can help, thanks a lot. when adding new run debug, it browses from column header at 08:00 to the end of column and booking table data runs ok and the load event, it browses the data from the booking table to the columns on the datagridview, so it crashes.
A meeting room has many meeting schedules, for example, there are 3 different meeting time frames and are on the same row, so how can I get the id of each meeting schedule? up to update
here is the code to get the display area of meeting time and meeting schedule
private void selectAreaColor()
{
string starttime ;
string stoptime ;
string selectedRoom ;
string selectedId ;
QueryRQ query = CreateQuery();
BookingIndexRS result = apiBooking.getBooking(query).Result;
//Loop through the BookingDetail table to get the required values Id, roomId, starttime,stoptime. but when it loads it gets all the fields in the table
//BookingDetail so when compared with Header time: 08:00,08:30....18:00 error
foreach (BookingDetail r in result.Data)
{
string idLocal = r.Id.ToString();
selectedId = idLocal + "";
string idroom = r.RoomId.ToString();
selectedRoom = idroom + "";
string start = r.Start.ToString();
starttime = start;
string stop = r.Stop.ToString();
stoptime = stop;
string getDate =(r.Date.ToString());
// Get the start time and end time inputs and the selected meeting room
DateTime startTime = DateTime.ParseExact(starttime, "HH:mm", null);
DateTime stopTime = DateTime.ParseExact(stoptime, "HH:mm", null);
foreach (DataGridViewRow row in grdRoom.Rows)
{
if (row.Cells["Id"].Value.ToString() == selectedRoom)
{
int rowIndex = row.Index;
// Loop through the columns and compare the start and end times with the time slots
for (int i = 1; i < grdRoom.Columns.Count; i++)
{
DateTime columnTime = DateTime.ParseExact(grdRoom.Columns[i].HeaderText, "HH:mm", CultureInfo.InvariantCulture);//event load here error while add new not error, but call on event load is error
string _HeaderText = grdRoom.Columns[i].Name.ToString();
if (startTime == columnTime)//|| endTime == columnTime
{
grdRoom.Rows[rowIndex].Cells[_HeaderText].Style.BackColor = Color.Blue;
if (startTime == stopTime)
return;
else
startTime = startTime.AddMinutes(30);
}
}
}
}
}
}

Tuhin PaulPosted Mar 15, 2023, 1:29 AM
Hello honag luc,
You are experiencing an error when calling the
selectAreaColor()function during the load event. To troubleshoot this issue, you may need to provide more information about the error message and its stack trace. Additionally, you mentioned that the function works when adding new runs, but not during the load event. It may be helpful to inspect the differences between the two scenarios to identify the root cause of the issue.Regarding your question about getting the ID of each meeting schedule for a given meeting room, you can add another column to the datagridview that displays the ID for each booking. You can then update the
foreachloop inselectAreaColor()to get the ID for each booking and use it to differentiate between multiple meetings for the same room and time frame. You can also consider grouping the bookings by room and time to make it easier to distinguish between them.