public TenorStrikeRates GetDataGridSource() { TenorStrikeRates quotes = new TenorStrikeRates(); foreach (DataGridViewColumn column in dgv.Columns) { string columnHeaderValue = column.HeaderText; if (columnHeaderValue != null) { double strike = ReadStrike(columnHeaderValue); foreach (DataGridViewRow row in dgv.Rows) { object rowHeaderValue = row.HeaderCell.Value; if (rowHeaderValue != null) { string tenor = rowHeaderValue.ToString(); object rateValue = row.Cells[column.Name].Value; double rate = rateValue == null ? double.NaN : Convert.ToDouble(rateValue); quotes.Add(new TenorStrikeRate(tenor, strike, rate)); } } } } return(quotes); }
private void dgv_CellEndEdit(object sender, DataGridViewCellEventArgs e) { if (ReturnDataGridSource != null) { TenorStrikeRates newSource = GetDataGridSource(); ReturnDataGridSource(newSource); } }
private static void OnGridSourcePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { TenorStrikeRates newGridSource = (TenorStrikeRates)e.NewValue; TenorStrikeRates currentGridSource = dgvUc.GetDataGridSource(); if (!currentGridSource.Equals(newGridSource)) { dgvUc.Set(newGridSource); } }
public void Set(TenorStrikeRates source) { dgv.Columns.Clear(); dgv.Rows.Clear(); if (source != null) { PopulateColumnHeader(source.UniqueSortedStrikes); PopulateRowHeader(source.UniqueSortedTenors); PopulateCells(source); } }
private string BuildOutputValue(TenorStrikeRates tenorStrikeRates) { string text = string.Empty; foreach (TenorStrikeRate item in tenorStrikeRates) { text = text + string.Format("Tenor: {0}, Strike: {1}, Rate: {2}\n", item.Tenor, item.Strike.ToString("P2"), item.Rate); } return(text); }
private TenorStrikeRates BuildInitialInput() { var quotes = new TenorStrikeRates(); quotes.Add(new TenorStrikeRate("1y", -0.01, 0.01)); quotes.Add(new TenorStrikeRate("1y", 0, 0.02)); quotes.Add(new TenorStrikeRate("1y", 0.01, 0.03)); quotes.Add(new TenorStrikeRate("2y", -0.01, 0.04)); quotes.Add(new TenorStrikeRate("2y", 0, 0.05)); quotes.Add(new TenorStrikeRate("2y", 0.01, 0.06)); return(quotes); }
private void PopulateCells(TenorStrikeRates quotes) { List <string> tenors = quotes.UniqueSortedTenors; List <double> strikes = quotes.UniqueSortedStrikes; for (int rowIdx = 0; rowIdx < tenors.Count; rowIdx++) { string optionTenor = tenors[rowIdx]; for (int colIdx = 0; colIdx < strikes.Count; colIdx++) { double strike = strikes[colIdx]; TenorStrikeRate quote = quotes.Find(optionTenor, strike); if (quote != null) { double rate = quote.Rate; DataGridViewCell cell = dgv.Rows[rowIdx].Cells[colIdx]; cell.Value = rate; } } } }
private void OnReturnDataGridSource(TenorStrikeRates currentGridSource) { GridSource = currentGridSource; }