Esempio n. 1
0
        /// <summary>
        /// Whenever the value of a cell is edited, update the database entry and the corresponding DataSet value.
        /// Update the grid to reflect these changes.
        /// </summary>
        private void DatabaseGrid_RecordValueChanged(object sender, RecordValueChangedEventArgs e)
        {
            try {
                // Object that holds the values of the record that the edited cell belongs to.
                DataRowView drv = e.Record.GetData() as DataRowView;

                // If the cell's record belongs to the Employee table.
                if (e.Record.ParentChildTable.Name == "Employees")
                {
                    // Queue a 'Edit Employee' task to the Thread pool.
                    ThreadPool.QueueUserWorkItem(state => {
                        // Increments the job counter in a thread-safe manner.
                        Interlocked.Increment(ref jobCount);

                        string[] updatedValues = { drv[1].ToString(), drv[2].ToString(), drv[3].ToString(), drv[4].ToString() };

                        // Edit the database employee entry.
                        DatabaseWorker.EditEmployee(Convert.ToInt32(drv[0]), updatedValues[0],
                                                    updatedValues[1], updatedValues[2],
                                                    updatedValues[3]);

                        // Get the index of the grid entry.
                        int index = databaseGrid.GetTable("Employees").UnsortedRecords.IndexOf(e.Record);

                        // Set the 'Name' field in the employee schedule entry that has the same index.
                        databaseGrid.GetTable("Employee Schedule").UnsortedRecords[index].SetValue("Name", drv[1].ToString());

                        // Decrements the job counter in a thread-safe manner.
                        Interlocked.Decrement(ref jobCount);
                    }
                                                 );
                }

                // If the cell's record belongs to the Employee Schedule table
                else if (e.Record.ParentChildTable.Name == "Employee Schedule")
                {
                    string[] updatedScheduleValues = new string[7];

                    // Get updated schedule values.
                    for (int i = 2; i < 9; i++)
                    {
                        updatedScheduleValues[i - 2] = drv[i].ToString();
                    }

                    // Queue a 'Edit Employee Schedule' task to the thread pool.
                    ThreadPool.QueueUserWorkItem(state => {
                        // Increments the job counter in a thread-safe manner.
                        Interlocked.Increment(ref jobCount);

                        DatabaseWorker.EditEmployeeSchedule(Convert.ToInt32(drv[0]), updatedScheduleValues);

                        // Decrements the job counter in a thread-safe manner.
                        Interlocked.Decrement(ref jobCount);
                    }
                                                 );
                }

                // If the cell's record belongs to the Customer table
                else if (e.Record.ParentChildTable.Name == "Customers")
                {
                    // Queue a 'Edit Customer' task to the thread pool.
                    ThreadPool.QueueUserWorkItem(state => {
                        // Increments the job counter in a thread-safe manner.
                        Interlocked.Increment(ref jobCount);

                        string[] updatedValues = { drv[1].ToString(), drv[2].ToString(), drv[3].ToString() };

                        // Edit the customer database entry.
                        DatabaseWorker.EditCustomer(Convert.ToInt32(drv[0]), updatedValues[0], updatedValues[1], updatedValues[2]);

                        // Get the index of the grid entry.
                        int index = databaseGrid.GetTable("Customers").UnsortedRecords.IndexOf(e.Record);

                        // Set the 'Name' field in the customer attendance entry that has the same index.
                        databaseGrid.GetTable("Customer Attendance").UnsortedRecords[index].SetValue("Name", drv[1].ToString());

                        // Decrements the job counter in a thread-safe manner.
                        Interlocked.Decrement(ref jobCount);
                    }
                                                 );
                }

                // If the cell's record belongs to the Customer Attendance table.
                else if (e.Record.ParentChildTable.Name == "Customer Attendance")
                {
                    string[] updatedAttendanceValues = new string[7];

                    for (int i = 2; i < 9; i++)
                    {
                        updatedAttendanceValues[i - 2] = drv[i].ToString();
                    }

                    // Queue a 'Edit Customer Attendance' task to the thread pool
                    ThreadPool.QueueUserWorkItem(state => {
                        // Increments the job counter in a thread-safe manner.
                        Interlocked.Increment(ref jobCount);

                        DatabaseWorker.EditCustomerAttendance(Convert.ToInt32(drv[0]), updatedAttendanceValues);

                        // Decrements the job counter in a thread-safe manner.
                        Interlocked.Decrement(ref jobCount);
                    }
                                                 );
                }
            }
            catch (Exception) {
                MessageBoxAdv.Show(this, "Error editing value.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// **************** TODO: COMPLETE DOCUMENTATION *****************
        ///
        /// Whenever the value of a cell is edited, update the database entry and the corresponding DataSet value.
        /// Updat the grid to reflect these changes.
        /// </summary>
        private void databaseGrid_RecordValueChanged(object sender, RecordValueChangedEventArgs e)
        {
            // Object that holds the values of the record that the edited cell belongs to.
            DataRowView drv = e.Record.GetData() as DataRowView;

            // If the cell's record belongs to the Employee table
            if (e.Record.ParentChildTable.Name == "Employees")
            {
                ThreadPool.QueueUserWorkItem(state => {
                    DatabaseWorker.EditEmployee(Convert.ToInt32(drv[0]), drv[1].ToString(),
                                                drv[2].ToString(), drv[3].ToString(),
                                                drv[4].ToString());

                    string[] updatedEmployeeValues = DatabaseWorker.GetEmployeeEntryNoId(Convert.ToInt32(drv[0]));

                    int index = databaseGrid.GetTable("Employees").UnsortedRecords.IndexOf(e.Record);

                    e.Record.UpdateValues(updatedEmployeeValues);

                    databaseGrid.GetTable("Employee Schedule").UnsortedRecords[index].SetValue("Name", drv[1].ToString());
                }
                                             );
            }

            // If the cell's record belongs to the Employee Schedule table
            else if (e.Record.ParentChildTable.Name == "Employee Schedule")
            {
                string[] scheduleValues = new string[7];

                for (int i = 2; i < 9; i++)
                {
                    scheduleValues[i - 2] = drv[i].ToString();
                }

                ThreadPool.QueueUserWorkItem(state => {
                    DatabaseWorker.EditEmployeeSchedule(Convert.ToInt32(drv[0]), scheduleValues);

                    string[] updatedScheduleValues = DatabaseWorker.GetEmployeeScheduleEntry(Convert.ToInt32(drv[0]));
                    e.Record.UpdateValues(updatedScheduleValues);
                }
                                             );
            }

            // If the cell's record belongs to the Customer table
            else if (e.Record.ParentChildTable.Name == "Customers")
            {
                ThreadPool.QueueUserWorkItem(state => {
                    DatabaseWorker.EditCustomer(Convert.ToInt32(drv[0]), drv[1].ToString(), drv[2].ToString(), drv[3].ToString());

                    string[] updatedCustomerValues = DatabaseWorker.GetCustomerEntryNoId(Convert.ToInt32(drv[0]));

                    int index = databaseGrid.GetTable("Customers").UnsortedRecords.IndexOf(e.Record);

                    e.Record.UpdateValues(updatedCustomerValues);

                    databaseGrid.GetTable("Customer Attendance").UnsortedRecords[index].SetValue("Name", drv[1].ToString());
                }
                                             );
            }

            // If the cell's record belongs the Customer Attendance table.
            else if (e.Record.ParentChildTable.Name == "Customer Attendance")
            {
                string[] attendanceValues = new string[7];

                for (int i = 2; i < 9; i++)
                {
                    attendanceValues[i - 2] = drv[i].ToString();
                }

                ThreadPool.QueueUserWorkItem(state => {
                    DatabaseWorker.EditCustomerAttendance(Convert.ToInt32(drv[0]), attendanceValues);

                    string[] updatedAttendanceValues = DatabaseWorker.GetCustomerAttendanceEntry(Convert.ToInt32(drv[0]));
                    e.Record.UpdateValues(updatedAttendanceValues);
                }
                                             );
            }
        }