Smrf.NodeXL.ExcelTemplate.DynamicFilterSettings.Open C# (CSharp) Method

Open() public method

public Open ( ) : void
return void
    Open()
    {
        Debug.Assert(m_oDynamicFilterSettingsTable == null);
        AssertValid();

        // Get the table that contains the dynamic filter settings.

        if (!ExcelTableUtil.TryGetTable(m_oWorkbook,
            WorksheetNames.Miscellaneous, TableNames.DynamicFilterSettings,
            out m_oDynamicFilterSettingsTable) )
        {
            OnWorkbookFormatError( String.Format(

                "A table that is required to use this feature is missing."
                + "\r\n\r\n{0}"
                ,
                ErrorUtil.GetTemplateMessage()
                ) );
        }

        foreach (ExcelTableReader.ExcelTableRow oRow in
            ( new ExcelTableReader(m_oDynamicFilterSettingsTable) ).GetRows() )
        {
            String sTableName, sColumnName;
            Double dSelectedMinimum, dSelectedMaximum;

            if (
                oRow.TryGetNonEmptyStringFromCell(
                    DynamicFilterSettingsTableColumnNames.TableName,
                    out sTableName)
                &&
                oRow.TryGetNonEmptyStringFromCell(
                    DynamicFilterSettingsTableColumnNames.ColumnName,
                    out sColumnName)
                &&
                oRow.TryGetDoubleFromCell(
                    DynamicFilterSettingsTableColumnNames.SelectedMinimum,
                    out dSelectedMinimum)
                &&
                oRow.TryGetDoubleFromCell(
                    DynamicFilterSettingsTableColumnNames.SelectedMaximum,
                    out dSelectedMaximum)
               )
            {
                // Create a SettingsForOneFilter object for each filter and
                // store it in a dictionary.

                SettingsForOneFilter oSettingsForOneFilter =
                    new SettingsForOneFilter();

                oSettingsForOneFilter.SelectedMinimum =
                    (Decimal)dSelectedMinimum;

                oSettingsForOneFilter.SelectedMaximum =
                    (Decimal)dSelectedMaximum;

                oSettingsForOneFilter.SelectedMinimumAddress =
                    ExcelUtil.GetRangeAddressAbsolute(
                        oRow.GetRangeForCell(
                        DynamicFilterSettingsTableColumnNames.SelectedMinimum)
                        );

                oSettingsForOneFilter.SelectedMaximumAddress =
                    ExcelUtil.GetRangeAddressAbsolute(
                        oRow.GetRangeForCell(
                        DynamicFilterSettingsTableColumnNames.SelectedMaximum)
                        );

                m_oDynamicFilterSettingsDictionary.Add(
                    GetDictionaryKey(sTableName, sColumnName),
                        oSettingsForOneFilter);
            }
        }
    }

Usage Example

    OnLoad
    (
        EventArgs e
    )
    {
        AssertValid();

        base.OnLoad(e);

        this.Application.ScreenUpdating = false;

        try
        {
            // Get access to the dynamic filter settings, which are stored in
            // a hidden worksheet.

            m_oDynamicFilterSettings = new DynamicFilterSettings(m_oWorkbook);
            m_oDynamicFilterSettings.Open();

            InitializeDynamicFilters();
        }
        catch (Exception oException)
        {
            this.Application.ScreenUpdating = true;
            ErrorUtil.OnException(oException);

            this.Close();
            return;
        }
        finally
        {
            this.Application.ScreenUpdating = true;
        }
    }