private void knockoutScoresDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e) { DataGridView dgv = sender as DataGridView; string columnName = dgv.Columns[e.ColumnIndex].Name; int roundNumber = knockoutRoundsCombobox.SelectedIndex + 1; DataTable sessionsTable = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutSessions); DataRow dRow = sessionsTable.Rows.Find(roundNumber); int numberOfSessions = (int)dRow["Number_Of_Sessions"]; if (columnName.Contains("Session") || columnName == "Carryover") { double total = 0; Object value = dgv.Rows[e.RowIndex].Cells["Carryover"].Value; total += (value == DBNull.Value) ? 0 : (double)value; for (int i = 1; i <= numberOfSessions; ++i) { value = dgv.Rows[e.RowIndex].Cells["Session_" + i + "_Score"].Value; total += (value == DBNull.Value) ? 0 : (double)value; } dgv.Rows[e.RowIndex].Cells["Total"].Value = total; } else if (columnName == "Team_Number") { dgv.Rows[e.RowIndex].Cells["Team_Name"].Value = LocalUtilities.getTeamName(m_databaseFileName, Constants.TableName.KnockoutTeams, (int)dgv.Rows[e.RowIndex].Cells["Team_Number"].Value); } }
private void createRoundScoresTable(int roundNumber) { List <DatabaseField> fields = new List <DatabaseField>(); fields.Add(new DatabaseField("Match_Number", "INTEGER")); fields.Add(new DatabaseField("Team_Number", "INTEGER")); fields.Add(new DatabaseField("Team_Name", "TEXT", 255)); fields.Add(new DatabaseField("Carryover", "NUMBER")); fields.Add(new DatabaseField("Total", "NUMBER")); DataTable table = AccessDatabaseUtilities.getDataTable(m_databaseFileName, Constants.TableName.KnockoutSessions); DataRow dRow = table.Rows.Find(roundNumber); int numberOfSessions = (int)dRow["Number_Of_Sessions"]; m_oldNumberOfSessions[roundNumber] = numberOfSessions; for (int i = 1; i <= numberOfSessions; ++i) { fields.Add(new DatabaseField("Session_" + i + "_Score", "NUMBER")); } List <string> primaryKeys = new List <string>(); primaryKeys.Add("Match_Number"); primaryKeys.Add("Team_Number"); DataTable scoresTable = AccessDatabaseUtilities.createTable(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber, fields, primaryKeys); int numberOfMatches = Convert.ToInt32(Math.Pow(2, roundNumber - 1)); for (int i = 1; i <= numberOfMatches; ++i) { DataRow dScoresRow = scoresTable.NewRow(); dScoresRow["Match_Number"] = i; int teamNumber = i; dScoresRow["Team_Number"] = i; dScoresRow["Team_Name"] = LocalUtilities.getTeamName(m_databaseFileName, Constants.TableName.KnockoutTeams, i); scoresTable.Rows.Add(dScoresRow); dScoresRow = scoresTable.NewRow(); dScoresRow["Match_Number"] = i; teamNumber = 2 * numberOfMatches - (i - 1); dScoresRow["Team_Number"] = teamNumber; dScoresRow["Team_Name"] = LocalUtilities.getTeamName(m_databaseFileName, Constants.TableName.KnockoutTeams, teamNumber); scoresTable.Rows.Add(dScoresRow); } AccessDatabaseUtilities.saveTableToDatabase(m_databaseFileName, Constants.TableName.KnockoutScores + "_" + roundNumber); }