OLAP for WinForms
定義済みビューの作成
クイックスタート > C1OlapPage のカスタマイズ > 定義済みビューの作成

現在のビューを XML 文字列として取得または設定する ViewDefinition プロパティに加え、C1OlapPage コントロールは、ビューをファイルおよびストリームに維持できる ReadXml および WriteXml メソッドも公開しています。これらのメソッドは、組み込みツールストリップの[ロード]および[保存]ボタンをクリックすると、C1OlapPage によって自動的に呼び出されます。

これらのメソッドを使用することで、事前定義されたビューをとても簡単に実装することができます。この場合は、最初にいくつかビューを作成し、[保存]ボタンを押してそれぞれのビューを保存します。この例では、以下の分類で売上を示す5つのビューを作成します。

  1. 製品と国
  2. 営業担当者と国
  3. 営業担当者と年
  4. 営業担当者と月
  5. 営業担当者と平日

すべてのビューを作成して保存したら、"OlapViews" ノードを含む "OlapViews.xml" という名前の新しい XML ファイルを作成し、すべてのデフォルトビューをコピーしてこのドキュメントに貼り付けます。次に、各ビューに "id" タグを追加し、それぞれに一意の名前を割り当てます。この名前は、ユーザーインタフェースに表示されます(OLAP では必要ありません)。XML ファイルは次のようになります。

<OlapViews>
<C1OlapPage id="Product vs Country">
<!-- view definition omitted... -->
<C1OlapPage id="SalesPerson vs Country">
<!-- view definition omitted... -->
<C1OlapPage id="SalesPerson vs Year">
<!-- view definition omitted... -->
<C1OlapPage id="SalesPerson vs Month">>
<!-- view definition omitted... -->
<C1OlapPage id="SalesPerson vs Weekday">
<!-- view definition omitted... -->
</OlapViews>

このファイルをプロジェクトにリソースとして追加します。それには、次の手順に従います。

  1. ソリューションエクスプローラーでプロジェクトノードを右クリックし、[プロパティ]をクリックします。
  2. [リソース]タブを選択し、[リソースの追加]の横にあるドロップダウン矢印をクリックします。
  3. [既存のファイルの追加]オプションを選択し、XML ファイルを選択して、[開く]をクリックします。

ビュー定義の準備ができたので、ユーザーが選択できるようにメニューに公開する必要があります。それには、次のコードをプロジェクトにコピーします。

コード
コードのコピー
private void Form1_Load(object sender, EventArgs e)
{
    // 自動生成されます。
    // このコードの行は、データを 'nWINDDataSet.Invoices' テーブルにロードします。
    this.invoicesTableAdapter.Fill(this.nwindDataSet.Invoices);
 
    // 事前定義されたビューでメニューを構築します
    var doc = new System.Xml.XmlDocument();
    doc.LoadXml(Properties.Resources.OlapViews);
    var menuView = new ToolStripDropDownButton("&View");
    foreach (System.Xml.XmlNode nd in doc.SelectNodes("OlapViews/C1OlapPage"))
    {
        var tsi = menuView.DropDownItems.Add(nd.Attributes["id"].Value);
        tsi.Tag = nd;
    }
    menuView.DropDownItemClicked += menuView_DropDownItemClicked;
    c1OlapPage1.Updated += c1OlapPage1_Updated;
 
    // C1OlapPage ツールストリップに新しいビューメニューを追加します
    c1OlapPage1.ToolStrip.Items.Insert(3, menuView);
}

コードは、新しいツールストリップドロップダウンボタンを作成し、XML ドキュメントにレポート定義をロードし、検索したレポートをドロップダウンボタンに追加します。各項目の Text プロパティにはビュー名、Tag プロパティには実際の XML ノードが含まれます。このノードは、後でユーザーが選択したビューを適用するために使用されます。

ドロップダウンの準備ができたら、このコードは、ToolStrip プロパティを使用して C1OlapPage にドロップダウンを追加します。新しいボタンが、最初の2つのボタンと最初のセパレータに続く位置3に追加されます。

ここまでで不足しているコードは、ユーザーがボタンをクリックして選択する際に、C1OlapPage にビューを適用するコードです。これは、次のコードを使用して行います。

コード
コードのコピー
// 事前定義されたビューを選択します
void menuView_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
    var nd = e.ClickedItem.Tag as System.Xml.XmlNode;
    if (nd != null)
    {
   // XML からビュー定義をロードします
   c1OlapPage1.ViewDefinition = nd.OuterXml;
 
   // 現在のビュー名をステータスバーに表示します
   c1OlapPage1.LabelStatus.Text = nd.Attributes["id"].Value;
    }
}
void c1OlapPage1_Updated(object sender, EventArgs e)
{
    // ユーザーが変更を行ったらレポート名をクリアします
    c1OlapPage1.LabelStatus.Text = string.Empty;
}

このコードは、ノードの OuterXml プロパティを読み込むことで、XML 文字列としてレポート定義を取得し、それを ViewDefinition プロパティに割り当てます。また、LabelStatus プロパティを使用して、C1OlapPage ステータスバーにビューの名前も表示します。

最後にコードは、Updated イベントを処理し、ユーザーがビューを変更するたびにステータスバーをクリアします。これは、ビューが、アプリケーションリソースからロードされた定義済みビューに一致しなくなったことを示します。

C1OlapPage では、ほとんどのコンポーネントが公開されているため、カスタマイズが容易です。TabControlツールストリップから、要素を追加、削除、または変更し、LabelStatus プロパティを使用してステータスメッセージを表示できます。ページには、C1OlapPage のほか、他の要素も追加できます。

さらにカスタマイズが必要な場合は、C1OlapPage をまったく使用せずに、下位レベルの C1OlapPanelC1OlapGrid、および C1OlapChart コントロールを使用してユーザーインタフェースを構築することもできます。C1OlapPage コントロールのソースコードがパッケージに含まれており、作業の開始点として使用できます。「カスタムユーザーインタフェースの作成」セクションの例は、この方法を示しています。