SetSettings
(
String tableName,
String columnName,
Decimal selectedMinimum,
Decimal selectedMaximum,
out String selectedMinimumAddress,
out String selectedMaximumAddress
)
{
Debug.Assert( !String.IsNullOrEmpty(tableName) );
Debug.Assert( !String.IsNullOrEmpty(columnName) );
Debug.Assert(selectedMaximum >= selectedMinimum);
AssertValid();
CheckOpen();
selectedMinimumAddress = selectedMaximumAddress = null;
SettingsForOneFilter oSettingsForOneFilter;
String sDictionaryKey = GetDictionaryKey(tableName, columnName);
Range oSelectedMinimumCell, oSelectedMaximumCell;
if ( m_oDynamicFilterSettingsDictionary.TryGetValue(
sDictionaryKey, out oSettingsForOneFilter) )
{
// The settings are already in the table. Update the table row.
Debug.Assert(m_oDynamicFilterSettingsTable.Parent is Worksheet);
Worksheet oWorksheet =
(Worksheet)m_oDynamicFilterSettingsTable.Parent;
oSelectedMinimumCell = oWorksheet.get_Range(
oSettingsForOneFilter.SelectedMinimumAddress, Missing.Value);
oSelectedMinimumCell.set_Value(Missing.Value, selectedMinimum);
oSelectedMaximumCell = oWorksheet.get_Range(
oSettingsForOneFilter.SelectedMaximumAddress, Missing.Value);
oSelectedMaximumCell.set_Value(Missing.Value, selectedMaximum);
// Update the dictionary entry.
oSettingsForOneFilter.SelectedMinimum = selectedMinimum;
oSettingsForOneFilter.SelectedMaximum = selectedMaximum;
}
else
{
// The settings aren't in the table yet. Add a row to the table.
Range oNewRowRange = ExcelTableUtil.AddTableRow(
m_oDynamicFilterSettingsTable,
DynamicFilterSettingsTableColumnNames.TableName,
tableName,
DynamicFilterSettingsTableColumnNames.ColumnName,
columnName,
DynamicFilterSettingsTableColumnNames.SelectedMinimum,
selectedMinimum,
DynamicFilterSettingsTableColumnNames.SelectedMaximum,
selectedMaximum
);
oSelectedMinimumCell = (Range)oNewRowRange.Cells[ 1,
GetTableColumnIndex(m_oDynamicFilterSettingsTable,
DynamicFilterSettingsTableColumnNames.SelectedMinimum, true) ];
oSelectedMaximumCell = (Range)oNewRowRange.Cells[ 1,
GetTableColumnIndex(m_oDynamicFilterSettingsTable,
DynamicFilterSettingsTableColumnNames.SelectedMaximum, true) ];
// Add a dictionary entry.
oSettingsForOneFilter = new SettingsForOneFilter();
oSettingsForOneFilter.SelectedMinimum = selectedMinimum;
oSettingsForOneFilter.SelectedMaximum = selectedMaximum;
oSettingsForOneFilter.SelectedMinimumAddress =
ExcelUtil.GetRangeAddressAbsolute(oSelectedMinimumCell);
oSettingsForOneFilter.SelectedMaximumAddress =
ExcelUtil.GetRangeAddressAbsolute(oSelectedMaximumCell);
m_oDynamicFilterSettingsDictionary.Add(sDictionaryKey,
oSettingsForOneFilter);
}
selectedMinimumAddress = oSettingsForOneFilter.SelectedMinimumAddress;
selectedMaximumAddress = oSettingsForOneFilter.SelectedMaximumAddress;
Debug.Assert( !String.IsNullOrEmpty(selectedMinimumAddress) );
Debug.Assert( !String.IsNullOrEmpty(selectedMaximumAddress) );
}