バージョン

igOlapFlatDataSource を ASP.NET MVC アプリケーションに追加

トピックの概要

目的

このトピックは、 ASP.NET MVC ヘルパーを使用して ASP.NET MVC アプリケーションへ igOlapFlatDataSource™ コンポーネントを追加する方法についての概念と詳しい手順を説明します。

前提条件

このトピックを理解するために、以下のトピックを参照することをお勧めします。

  • igOlapFlatDataSource の概要: このトピックでは、主要機能、最小要件およびユーザー機能性など、igOlapFlatDataSource コンポーネントに関する概念的な情報を提供します。

  • igOlapFlatDataSource の HTML ページへの追加: このトピックでは、 HTML ページへ igOlapFlatDataSource コンポーネントを追加する方法についての概念と詳しい手順を説明します。

このトピックの内容

このトピックは、以下のセクションで構成されます。

igOlapFlatDataSource の ASP.NET MVC アプリケーションへの追加 - 概要

igOlapFlatDataSource の ASP.NET MVC アプリケーションへの追加の概要

igOlapFlatDataSource は、MVC View の CS/VB コードでコンポーネントの使用を可能にする ASP.NET MVC ヘルパーが付随する、クライアント側コンポーネントです。ASP.NET MVC ヘルパーは igOlapFlatDataSourceigOlapXmlaDataSource コンポーネントに共通で、設定するオプションによって各データ ソースのインスタンスがクライアント上で作成されます。ヘルパーを使用する場合、データを視覚化する機能のある1 つ以上のコンポーネントにおける使用を可能にする識別子を提供します (igPivotDataSelector™、igPivotGrid™、igPivotView™)。

igOlapFlatDataSource を View で定義するには、それらを呼び出す同じオブジェクトを常に返すメソッドを使用して必要なプロパティを設定します。これにより、必要なすべてのプロパティを設定するために使用する構文をチェーンできます。DataSourceOptions などの複雑なオブジェクトの場合、この種の構文を実現するためにラムダ式ビルダーを使用します。

要件

以下は、igOlapFlatDataSource を ASP.NET MVC アプリケーションへ追加するための全般的な要件です。

手順

以下は、igOlapFlatDataSource を ASP.NET MVC アプリケーションへ追加するための一般的な手順です。

  1. Infragistics 名前空間を追加します

  2. View のデータを構成します

  3. 必要な JavaScript リソースを読み込む

  4. igOlapFlatDataSource を追加する

igOlapFlatDataSource の ASP.NET MVC アプリケーションへの追加 - 例

概要

以下の手順は、igOlapFlatDataSource コンポーネントを ASP.NET MVC アプリケーションに追加する方法について説明します。この例で必要なリソースは、自動的に Infragistics Loader に参照されます。

前提条件

この手順を実行するには、以下のリソースが必要です。

  • ASP.NET MVC アプリケーション
  • アプリケーション プロジェクトに追加された Infragistics.Web.Mvc.dll アセンブリへの参照

手順

以下の手順は、igOlapFlatDataSource を ASP.NET MVC アプリケーションに追加する方法を示します。

  1. Infragistics 名前空間を追加します。

    Infragistics.Web.Mvc 名前空間を自分のビュー コードに追加します。

    ASPX の場合:

     <%=Import Namespace=”Infragistics.Web.Mvc” %>
    
  2. View のデータを構成します。

    コントローラーのコードで、View のアクション メソッドにおいて View のモデルを構成します。

    C# の場合:

     //…
     var sales = new List<object>() { 
         new { ProductCategory = "Clothing", SellerName = "Stanley Brooker", UnitPrice = 12.814, UnitsSold = 282, SalesDate = DateTime.Today.ToShortDateString()},
         new { ProductCategory = "Bikes", SellerName = "Elisa Longbottom", UnitPrice = 49.579, UnitsSold = 201, SalesDate = DateTime.Today.AddMonths(-14).ToShortDateString()},
         new { ProductCategory = "Accessories", SellerName = "Erica Wild", UnitPrice = 3.565, UnitsSold = 68, SalesDate = DateTime.Today.AddMonths(-20).ToShortDateString()}
     };
     return View(sales);
    
  3. Infragistics 名前空間への参照を追加します。

    1. Infragistics Loader コンポーネントへスクリプト参照を追加します。

      以下のスクリプト参照をビューのヘッド セクションに追加します。

      ASPX の場合:

       <script src="[path to js folder]/infragistics.loader.js"></script>
      
    2. Infragistics Loader の定義を追加します。

      以下のコードは、Infragistics Loader を使用して必要なリソースを取り込みます。

      ASPX の場合:

       <%=Html.Infragistics()
               .Loader()
               .ScriptPath("[js path]")
               .CssPath("[css path]")
               .Render()
       %>
      
  4. igOlapFlatDataSource コンポーネントを追加します。

    1. ID を設定する igOlapFlatDataSource 宣言を追加します。

      宣言を View のコードに追加します。

      ASPX の場合:

       <%=Html.Infragistics().OlapDataSource().ID("flatDataSource")
       // remaining code goes here
       %>
      
    2. (オプション) 共通の OLAP データ ソース プロパティを構成します。

      DataSourceOptions メソッドを使用して、列、行、メジャーなど両方の多次元 (OLAP) データ ソースに共通のプロパティを設定します。

      ASPX の場合:

       <%=Html.Infragistics().OlapDataSource().ID("flatDataSource")
         .DataSourceOptions(dataSourceOptions => dataSourceOptions
             .Columns("[SalesDate].[SalesDate]")
             .Rows("[ProductCategory].[ProductCategory]")
             .Measures("[Measures].[UnitPrice]"))
       %>
      
    3. igOlapFlatDataSource 特有のプロパティを構成します。

      FlatDataOptions オブジェクトの metadata プロパティが必要です。その値は、入力データに対してディメンジョン、階層、レベル、メジャー等をどのように生成するかを定義します。詳細は、「メタデータの定義 (igOlapFlatDataSource)」を参照してください。

      ASPX の場合:

       <%=Html.Infragistics().OlapDataSource().ID("flatDataSource")
         .DataSourceOptions(dataSourceOptions => dataSourceOptions
             // common properties
             .FlatDataOptions(flatOptions => flatOptions.Metadata(
           metadata => metadata.Cube(cube => cube.Name("Sales")
               .MeasuresDimension(measuresDimension => measuresDimension.Measures(
                   measures =>
                   {
                       measures.AddMeasure().Name("UnitPrice").Caption("Unit Price").Aggregator("$.ig.OlapUtilities.prototype.sumAggregator('UnitPrice')");
                       measures.AddMeasure().Name("UnitsSold").Caption("Units Sold").Aggregator("$.ig.OlapUtilities.prototype.sumAggregator('UnitsSold')");
                   }))
               .Dimensions(dimensions =>
                   {
                       dimensions.AddDimension().Name("Seller").Caption("Seller").Hierarchies(
                           hiearachies =>
                               hiearachies.AddHierarchy().Name("Seller").Caption("Seller").Levels(levels =>
                               {
                                   levels.AddLevel().Name("AllSellers").Caption("All Sellers")
                                       .MemberProvider("function(item) {return 'All Sellers';}");
                                   levels.AddLevel().Name("SellerName").Caption("Seller Name")
                                       .MemberProvider("function(item) {return item.SellerName; }");
                               }));
                       dimensions.AddDimension().Name("SalesDate").Caption("Sales Date").Hierarchies(
                           hierarchies =>
                           {
                               hierarchies.AddHierarchy().Name("SalesDate").Caption("Sales Date").Levels(levels =>
                               {
                                   levels.AddLevel().Name("AllPeriods").Caption("All Periods").MemberProvider("function(item) { return 'All Periods'; }");
                                   levels.AddLevel().Name("Year").Caption("Year").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('year', 'SalesDate')");
                                   levels.AddLevel().Name("Quarter").Caption("Quarter").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('quarter', 'SalesDate')");
                                   levels.AddLevel().Name("Month").Caption("Month").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('month', 'SalesDate')");
                                   levels.AddLevel().Name("Date").Caption("Date").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('date', 'SalesDate')");
                               });
                           });
                       dimensions.AddDimension().Name("ProductCategory").Caption("Product Category").Hierarchies(
                           hiearachies =>
                               hiearachies.AddHierarchy().Name("ProductCategory").Caption("Product Category").Levels(levels =>
                               {
                                   levels.AddLevel().Name("AllProducts").Caption("All Products")
                                       .MemberProvider("function(item) {return 'All Products'; }");
                                   levels.AddLevel().Name("ProductCategory").Caption("Product Category")
                                       .MemberProvider("function(item) {return item.ProductCategory; }");
                               }));
                   })))
       %>
      
    4. データ ソースを View のモデルに設定します。

      コントローラーで提供するモデルにデータ ソースを設定します。次に DataBind メソッドを呼び出してモデル データをクライアントに送ります。

      ASPX の場合:

       <%= Html.Infragistics().OlapDataSource().ID("flatDataSource").DataSourceOptions(
           dataSourceOptions => dataSourceOptions.FlatDataOptions(
               // flat data options
           ).DataSource(this.Model).DataBind()))
       %>
      
    5. JavaScript コードを描画します。

      提供したセットアップに従って JavaScript をレンダリングするには Render メソッドを呼び出します。

      ASPX の場合:

       <%= Html.Infragistics().OlapDataSource().ID("flatDataSource")
         // all options
                 .Render()
       %>
      

      この時点では、igPivotDataSelector、igPivotGrid および igPivotView などのピボット グリッド関連のコントロールにおいてデータ ソース コンポーネント インスタンスを使用するために、OlapDataSource 定義を設定する ID を使用できます。

完全なコード

以下は、このプロシージャの完全なコードです。

ASPX の場合:

<%= Html.Infragistics().OlapDataSource().ID("flatDataSource")
        .DataSourceOptions(
            dataSourceOptions => dataSourceOptions
                .Columns("[SalesDate].[SalesDate]")
                .Rows("[ProductCategory].[ProductCategory]")
                .Measures("[Measures].[UnitPrice]")
                .FlatDataOptions(flatOptions => flatOptions.Metadata(
                    metadata => metadata.Cube(cube => cube.Name("Sales")
                        .MeasuresDimension(measuresDimension => measuresDimension.Measures(
                            measures =>
                            {
                                measures.AddMeasure().Name("UnitPrice").Caption("Unit Price").Aggregator("$.ig.OlapUtilities.prototype.sumAggregator('UnitPrice')");
                                measures.AddMeasure().Name("UnitsSold").Caption("Units Sold").Aggregator("$.ig.OlapUtilities.prototype.sumAggregator('UnitsSold')");
                            }))
                        .Dimensions(dimensions =>
                            {
                                dimensions.AddDimension().Name("Seller").Caption("Seller").Hierarchies(
                                    hiearachies =>
                                        hiearachies.AddHierarchy().Name("Seller").Caption("Seller").Levels(levels =>
                                        {
                                            levels.AddLevel().Name("AllSellers").Caption("All Sellers")
                                                .MemberProvider("function(item) {return 'All Sellers';}");
                                            levels.AddLevel().Name("SellerName").Caption("Seller Name")
                                                .MemberProvider("function(item) {return item.SellerName; }");
                                        }));
                                dimensions.AddDimension().Name("SalesDate").Caption("Sales Date").Hierarchies(
                                    hierarchies =>
                                    {
                                        hierarchies.AddHierarchy().Name("SalesDate").Caption("Sales Date").Levels(levels =>
                                        {
                                            levels.AddLevel().Name("AllPeriods").Caption("All Periods").MemberProvider("function(item) { return 'All Periods'; }");
                                            levels.AddLevel().Name("Year").Caption("Year").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('year', 'SalesDate')");
                                            levels.AddLevel().Name("Quarter").Caption("Quarter").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('quarter', 'SalesDate')");
                                            levels.AddLevel().Name("Month").Caption("Month").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('month', 'SalesDate')");
                                            levels.AddLevel().Name("Date").Caption("Date").MemberProvider("$.ig.OlapUtilities.prototype.dateMemberProvider('date', 'SalesDate')");
                                        });
                                    });
                                dimensions.AddDimension().Name("ProductCategory").Caption("Product Category").Hierarchies(
                                    hiearachies =>
                                        hiearachies.AddHierarchy().Name("ProductCategory").Caption("Product Category").Levels(levels =>
                                        {
                                            levels.AddLevel().Name("AllProducts").Caption("All Products")
                                                .MemberProvider("function(item) {return 'All Products'; }");
                                            levels.AddLevel().Name("ProductCategory").Caption("Product Category")
                                                .MemberProvider("function(item) {return item.ProductCategory; }");
                                        }));
                            })))
                        .DataSource(this.Model)
                        .DataBind()))
                    .Render()
%>

関連コンテンツ

トピック

このトピックの追加情報については、以下のトピックも合わせてご参照ください。

サンプル

このトピックについては、以下のサンプルも参照してください。

オンラインで表示: GitHub