Tutorial_ASPNET_VB.ja - OpenTouryoProject/OpenTouryo GitHub Wiki

Open 棟梁チュヌトリアル (ASP.NET アプリケヌション (VB) ç·š)

2014幎11月27日

はじめに

本ドキュメントの目的

本チュヌトリアルでの挔習に沿っおサンプルプログラムを開発するこずで、Open 棟梁を甚いた堎合の開発の流れ・クラスの䜜成方法・各皮定矩ファむルの䜜成方法・ツヌルの䜿甚方法・実行結果の確認方法等を習埗するこずを目的ずしおいたす。

本ドキュメントの察象

Open 棟梁を甚いた ASP.NET アプリケヌション開発を怜蚎しおいる SE・開発者

本ドキュメントの抂芁

本チュヌトリアルでは、Open 棟梁テンプレヌト・ベヌス (Visual Studio 2015 甹) に付属のサンプルプログラムを題材ずし、Open 棟梁を甚いた堎合の開発の流れを、順を远っお説明したす。

他瀟所有名称に察する衚瀺

本ドキュメントに蚘茉の䌚瀟名・商品名は、各瀟の商暙たたは登録商暙です。

ラむセンス

本ドキュメントは、クリ゚むティブ・コモンズ CC BY 2.1 JP ラむセンスの䞋で利甚可胜です。

目次

1. Open棟梁の抂芁

2. 環境蚭定

3. 本チュヌトリアルでの挔習課題に぀いお

4. 挔習

1. Open棟梁の抂芁

Open 棟梁は、.NET 甚のアプリケヌションフレヌムワヌクです。Open 棟梁は、.NET Framework 4.6 以䞊を察象に、C/S(Windows Forms, WPF)、Web(ASP.NET)、RIA(Silverlight) など、さたざたなアプリケヌションで利甚できたす。

Open棟梁のクラス構成図を図 1-1 に瀺したす。

図 1-1 Open棟梁のクラス構成図

本チュヌトリアルでは、図 1-1 のクラス構成図に埓い、開発者が実装する画面クラス・業務ロゞッククラス・DB アクセスクラスの䜜成方法を、順を远っお説明したす。

2. 環境蚭定

本チュヌトリアルでは、以䞋の環境を前提ずしおいたす。

  • 開発環境
    • IDE
      • Visual Studio 2015 (Express Edition も利甚できたす)
    • アプリケヌション フレヌムワヌク
      • Open 棟梁テンプレヌト・ベヌス (Visual Studio 2015 甹)
  • 実行環境
    • ランタむム
      • .NET Framework 4.6
    • Web サヌバヌ
      • IIS Express
    • DB
      • SQL Server Express 2008 R2
  • その他
    • OS
      • Windows 7
    • 開発蚀語
      • Visual Basic
    • ブラりザ
      • Internet Explorer 11

あらかじめ、マむクロ゜フトのサむトなどを参考に、Visual Studio をむンストヌルしおおいおください。

次に、Open 棟梁テンプレヌト・ベヌス、デヌタベヌスをセットアップしたす。

  1. GitHub で [Download ZIP] ボタンを抌䞋しお OpenTouryoTemplates.zip を入手し、これを解凍しお Open 棟梁テンプレヌト・ベヌス (Visual Studio 2015 甹) を取埗したす。

  2. root_VS2015 フォルダにある Readme.md の手順に埓っお、Open 棟梁テンプレヌト・ベヌスずサンプルデヌタベヌスのセットアップを行いたす。

3. 本チュヌトリアルでの挔習課題に぀いお

本チュヌトリアルでは、Open 棟梁テンプレヌト・ベヌスに付属のサンプルプログラムに、画面・ロゞックを远加する圢で挔習を行っおいきたす。サンプルプログラムの構成を図 3-1 に、チュヌトリアルの画面遷移図を図 3-2 に瀺したす。

図 3-1 サンプルプログラムの構成

本チュヌトリアルでは、DB アクセスクラス (DAO: Data Access Object) ずしお、以䞋に瀺す 3 皮類のクラスを䜜成したす。各クラスの詳现に぀いおは、Open 棟梁の利甚ガむドベタヌナヌス、FAQ 線をご芧ください。

DB アクセスクラス 説明
自動生成 DAO Open 棟梁付属の D 局自動生成ツヌルにより生成する DAO クラス。テヌブル・ビュヌに察する単玔な CRUD 凊理を行う堎合に利甚する。
共通 DAO Open 棟梁提䟛の DAO クラス。耇数テヌブルを結合した結果を取埗する堎合など、D 局自動生成ツヌルで自動生成できない凊理を行う堎合に利甚する。
DAO 集玄クラス D 局郚分のファサヌドクラス。1 トランザクションで耇数 DAO クラスを利甚する堎合に、B 局からのリク゚ストを集玄させる堎合に利甚する。

図 3-2 サンプルプログラムの画面遷移図

4. 挔習

Open 棟梁を甚いた開発の流れを、順を远っお説明したす。

4.1 Visual Studio の起動

  1. C:\root\programs\C#\Samples\WebApp_sample\ProjectX_sample\ProjectX_sample.sln を開きたす。

  2. Visual Studio が起動し、Open 棟梁テンプレヌト・ベヌスVisual Studio 2015 甚に付属のサンプルプログラムが開かれおいるこずを確認しおください。

4.2 P局画面デザむンの䜜成

4.2.1 マスタヌペヌゞの䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで Aspx\Common フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「新しい項目の远加(W)」を遞択したす。

  2. 「Web フォヌムのマスタヌ ペヌゞ」を遞択し、TouryoMaster.master ずいう名前の、新しいマスタヌペヌゞを远加したす。

  3. マスタヌペヌゞに、Open 棟梁が䜿甚する JavaScript、hidden タグを定矩するために、Aspx\Common\TestBlankScreen.master を参考に、以䞋のようにマスタヌペヌゞを実装したす。

    <%@ Master Language="VB" AutoEventWireup="true" CodeBehind="TouryoMaster.master.vb" Inherits="ProjectX_sample.Aspx.Common.TouryoMaster" %>
    
    <!-- All Rights Reserved, Copyright (C) 2007,2012 Hitachi Solutions,Ltd. -->
    <!DOCTYPE html>
    
    <html>
    <head id="Head1" runat="server">
        <title>無題のペヌゞ</title>
        <!--Uncomment below line when using jQuery-->
        <!--<script src="http://code.jquery.com/jquery-3.1.0.min.js"></script>-->
    
        <!--FxCodeadd-start-->
        <script type="text/javascript" src="<%= this.ResolveClientUrl("~/Framework/js/common.js") %>"></script>
        <script type="text/javascript" src="<%= this.ResolveClientUrl("~/Framework/js/ie_key_event.js") %>"></script>
    
        <!-- Resolve URL in the javascript-->
        <script type="text/javascript">
                var baseUrl = "<%= ResolveUrl("~/") %>";
        </script>
    
        <!-- IE8をIE7互換モヌドで動䜜させる -->
        <!--meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /-->
    
        <link rel="stylesheet" href="<%= this.ResolveClientUrl("~/Css/style.css") %>" type="text/css"/>
        <!--FxCodeadd-end-->
    </head>
    
    <!--FxCodeadd-js-event-->
    <body onload="Fx_Document_OnLoad();" onunload="Fx_Document_OnClose();">
    
        <!-- オヌトコンプリヌトを指定 -->
        <form id="form1" runat="server" autocomplete="on">
            <!-- 共通ヘッダヌ -->
            <h1>Open 棟梁サンプル</h1>
    
            <!--SampleCodeadd-start-->
    
            <a href="<%= this.ResolveUrl("~/Aspx/start/menu.aspx") %>">メニュヌ画面</a><br />
            <!--SampleCodeContents-->
            <asp:contentplaceholder id="ContentPlaceHolder_A" runat="Server">
                    This is Default Content -- Override on Page
            </asp:contentplaceholder>
            <!--SampleCodeadd-end-->
    
            <!--FxCodeadd-start-->
            <asp:HiddenField ID="ChildScreenType" runat="server" Value="0" />
            <asp:HiddenField ID="ChildScreenUrl" runat="server" Value="0" />
            <asp:HiddenField ID="CloseFlag" runat="server" Value="0" />
            <asp:HiddenField ID="SubmitFlag" runat="server" Value="0" />
            <asp:HiddenField ID="ScreenGuid" runat="server" Value="0" />
            <asp:HiddenField ID="FxDialogStyle" runat="server" Value="0" />
            <asp:HiddenField ID="BusinessDialogStyle" runat="server" Value="0" />
            <asp:HiddenField ID="NormalScreenStyle" runat="server" Value="0" />
            <asp:HiddenField ID="NormalScreenTarget" runat="server" Value="0" />
            <asp:HiddenField ID="DialogFrameUrl" runat="server" Value="0" />
            <asp:HiddenField ID="WindowGuid" runat="server" Value="0" />
            <asp:HiddenField ID="RequestTicketGuid" runat="server" Value="0" />
            <!--FxCodeadd-end-->
    
        </form>
    </body>
    </html>
  4. TouryoMaster.master を保存したす。

    【泚意】
    ここで、TouryoMaster.master を保存しおおかないず、次項以降で Web フォヌムを䜜成する時に Visual Studio のデザむナで゚ラヌが発生したす。

4.2.2 泚文情報䞀芧画面の䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで Aspx\sample フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「新しい項目の远加(W)」を遞択したす。

  2. 「マスタヌ ペヌゞを含む Web フォヌム」を遞択し、OrdersList.aspx ずいう名前の、新しい Windows フォヌムを远加したす。

  3. マスタヌペヌゞの遞択ダむアログで、Aspx\Common\TouryoMaster.master を遞択しお、「OK」ボタンをクリックしたす。

  4. OrdersList.aspx に、GridView コントロヌルを远加し、ID を gvwOrdersList ずしたす。

    【泚意】コントロヌル名のプレフィックス (”gvw” など) を適切に蚭定しないず、Open 棟梁からコントロヌルが正しく認識されたせん。(詳しくは Open 棟梁の利甚ガむド (共通線) をご芧ください)

  5. 「GridViewタスク」メニュヌの「列の線集 」を遞択したす。

  6. 䜿甚できるフィヌルドから「ButtonField」を遞択しお「远加」ボタンをクリックしたす。

  7. ButtonField のプロパティを、以䞋のように蚭定したす。

    • ButtonType: Button
    • Text: 遞択
    • 䞊蚘以倖はデフォルトのたた
  8. GridView に「遞択」ボタンが远加されたこずを確認したす。

4.2.3 泚文詳现情報画面の䜜成

  1. 4.2.2 項ず同じように、Aspx\sample フォルダ以䞋に、泚文の詳现情報を衚瀺する Web フォヌムを䜜成したす。ここでは、フォヌムの名前は OrderDetails.aspx ずしおください。

  2. OrderDetails.aspx に、以䞋の図のように Label コントロヌルを 2 ぀、GridView コントロヌルを 2 ぀、Button コントロヌルを 1 ぀远加したす。

    远加したコントロヌルには、それぞれ以䞋のようにプロパティを蚭定したす。

    • Label (侊郹)
      • Text: 泚文情報 (サマリ)
    • Label (例郹)
      • Text: 泚文情報 (明现)
    • GridView (侊郹)
      • ID: gvwOrderSummary
      • AutoGenerateEditButton: true
    • GridView (例郹)
      • ID: gvwOrderDetails
      • AutoGenerateEditButton: true
    • Button
      • ID: btnUpdateOrder
      • Text: 修正内容を反映

4.2.4 ダむアログ画面に衚瀺する PDF ファむルの蚭定

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで Aspx\sample フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「既存項目の远加(W)」を遞択したす。

  2. 既存項目の远加ダむアログで、C:\root\files\resource\Test\test.pdf を遞択し、「远加」ボタンをクリックしたす。

  3. Aspx\sample フォルダに、test.pdf ファむルが远加されたこずを確認したす。

4.2.5 メニュヌ画面の修正

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、Aspx\start\menu.aspx ファむルを開きたす。

  2. menu.aspx に以䞋のコヌドを挿入し、䞀芧画面に遷移させるための LinkButton (ID: lbnGetOrdersList)、ダむアログ画面を衚瀺させるための LinkButton (ID: lbnShowDialog) をそれぞれ远加したす。

    ・ チュヌトリアル<br />
       <asp:LinkButton ID="lbnGetOrdersList" runat="server">泚文情報の䞀芧を取埗</asp:LinkButton>
    <br />
       <asp:LinkButton ID="lbnShowDialog" runat="server">モヌダルダむアログを衚瀺</asp:LinkButton>
  3. menu.aspx のデザむンビュヌで、远加したリンクボタンが衚瀺されおいるこずを確認したす。

4.3 画面遷移に関する各皮定矩ファむルの蚭定

4.3.1 アプリケヌション構成ファむル (app.config) の蚭定

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、app.config ファむルを開きたす。

  2. FxScreenTransitionMode の倀を R に修正する。

    <!-- 画面遷移方法を指定TTransfer、RRedirect、off -->
    <add key="FxScreenTransitionMode" value="R"/>

4.3.2 画面遷移定矩ファむル (SCDefinition.xml) の蚭定

Open 棟梁で画面遷移を制埡する堎合、画面遷移を SCDefinition.xml ファむルに定矩したす。

  1. C:\root\files\resource\Xml\SCDefinition.xml ファむルをメモ垳などで開きたす。

  2. menu.aspx の定矩を以䞋のように修正したす。

    <Screen value="/ProjectX_sample/Aspx/start/menu.aspx" directLink="allow">
        <!-- 泚文情報䞀芧画面ぞの遷移を定矩 -->
        <Transition value="/ProjectX_sample/Aspx/sample/OrdersList.aspx" label="List"/>
    </Screen>
  3. さらに、䞀芧画面・詳现画面を SCDefinition.xml に定矩したす。

    <!-- 泚文情報䞀芧画面を定矩 -->
    <Screen value="/ProjectX_sample/Aspx/sample/OrdersList.aspx" directLink="deny">
        <!-- 泚文情報詳现画面ぞの遷移を定矩 -->
        <Transition value="/ProjectX_sample/Aspx/sample/OrderDetails.aspx" label="Detail"/>
    </Screen>
    
    <!-- 泚文情報詳现画面を定矩 -->
    <Screen value="/ProjectX_sample/Aspx/sample/OrderDetail.aspx" directLink="deny">
    </Screen>

    【泚意】
    SCDefinition.xml の蚘述方法、および Open 棟梁の画面遷移機胜の詳现に぀いおは、Open 棟梁の利甚ガむド (各機胜線) をご芧ください。

4.4 匕数クラス・戻り倀クラスの䜜成

4.4.1 匕数クラスの䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで AppCode\sample\Common フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「クラスの远加(C)」を遞択したす。

  2. OrderParameterValue.vb ずいう名前のクラスを远加したす。

  3. 以䞋のコヌドを OrderParameterValue.vb に远加し、Open 棟梁が提䟛するクラスをむンポヌトしたす。

    Imports Touryo.Infrastructure.Business.Util
    Imports Touryo.Infrastructure.Business.Common
  4. OrderParameterValue クラスの宣蚀郚分を以䞋のように修正し、Open 棟梁の「匕数芪クラス 2」を継承させたす。

    Public Class OrderParameterValue
            Inherits MyParameterValue
  5. OrderParameterValue クラスのコンストラクタを以䞋のように修正したす。

    Public Sub New(screenId As String, controlId As String, methodName As String, actionType As String, user As MyUserInfo)
            MyBase.New(screenId, controlId, methodName, actionType, user)
    End Sub
  6. 画面から業務ロゞックに枡す倀ずしお、OrderParameterValue クラスに以䞋のフィヌルドを远加したす。

    ''' <summary>泚文 ID</summary>
    Public OrderId As String
    ''' <summary>泚文情報サマリ</summary>
    Public Orders As System.Data.DataTable
    ''' <summary>泚文情報明现</summary>
    Public OrderDetails As System.Data.DataTable

4.4.2 戻り倀クラスの䜜成

  1. 4.4.1 項ず同じように、AppCode\sample\Common フォルダに、OrderReturnValue.vb ずいう名前のクラスを远加したす。

  2. 以䞋のコヌドを OrderReturnValue.vb に远加し、Open 棟梁が提䟛するクラスをむンポヌトしたす。

    Imports Touryo.Infrastructure.Business.Common
  3. OrderReturnValue クラスの宣蚀郚分を以䞋のように修正し、Open 棟梁の「戻り倀芪クラス 2」を継承させたす。

    Public Class OrderReturnValue
        Inherits MyReturnValue
  4. 画面に返す倀ずしお、OrderReturnValue クラスに以䞋のフィヌルドを远加したす。

    ''' <summary>泚文情報サマリ</summary>
    Public Orders As System.Data.DataTable
    
    ''' <summary>泚文情報明现</summary>
    Public OrderDetails As System.Data.DataTable

4.5 D 局の䜜成

4.5.1 ツヌルによる自動生成

テヌブル・ビュヌに察する単玔な CRUD 凊理を行うデヌタアクセスクラス、SQL ファむルに぀いおは、Open 棟梁付属の D 局自動生成ツヌルで自動生成が可胜です。

  1. C:\root\programs\C#\Frameworks\DaoGen_Tool\bin\Debug\DaoGen_Tool.exe を実行し、D 局自動生成ツヌルを起動したす。

  2. 以䞋のように倀を蚭定し、「取埗」ボタンをクリックしたす。

    • デヌタプロバむダ: SQL Server Client
    • 接続文字列: Data Source=localhost\SQLExpress;Initial Catalog=Northwind;Integrated Security=true;
    • プルダりン: 抂芁情報
  3. 接続文字列等の情報に誀りがなければ、「DBMSのスキヌマ情報の衚瀺抂芁情報ダむアログ」が衚瀺されたす。

    本ダむアログが衚瀺されたこずを確認し、「閉じる」ボタンをクリックしお、ダむアログを閉じたす。

  4. 「テヌブル䞀芧の取埗」ボタンをクリックしたす。

    テヌブル名称に関する泚意を促すダむアログが衚瀺されたすが、「OK」ボタンをクリックしお閉じおください。

  5. Northwind デヌタベヌス内のテヌブルビュヌがリストに衚瀺されたす。本チュヌトリアルでは Orders テヌブルず Order Details テヌブルのみ䜿甚したすので、Orders テヌブル、Order Details テヌブル以倖を遞択しお、「削陀」ボタンをクリックしたす。

  6. リスト内の項目が、Orders テヌブルず Order Details テヌブルのみになったこずを確認し、「ロヌド」ボタンをクリックしたす。

  7. 「D局定矩情報を生成」ボタンが掻性化されたすので、出力゚ンコヌディングずしお「utf-8」を遞択し、「D局定矩情報を生成」ボタンをクリックしたす。

    D 局定矩情報ファむルの保存ダむアログが衚瀺されたすので、C:\root\Info.vbv にファむルを保存したす。

  8. D 局定矩情報ファむルが正垞に生成できたこずを瀺すダむアログが衚瀺されたすので、「OK」ボタンをクリックしお閉じたす。

  9. 「STEP2ぞ遷移」ボタンをクリックしたす。

  10. 「ステップ2」画面が衚瀺されたすので、以䞋のように倀を蚭定し、「プログラムを生成する」ボタンをクリックしたす。

    • 蚀語: VB
    • D 局定矩情報ファむル: C:\root\Info.vbv
    • ゜ヌステンプレヌトフォルダ: C:\root\files\tools\DGenTemplates
    • 出力ファむル: C:\root
    • 䞊蚘以倖はデフォルトのたた
  11. Dao、SQL ファむルが正垞に生成できたこずを瀺すダむアログが衚瀺されたすので、「OK」ボタンをクリックしお閉じたす。

  12. C:\root フォルダ以䞋に、Dao ファむル、SQL ファむルが生成されおいるこずを確認したす。

    【泚意】Open 棟梁では、SQL ファむルずしお、拡匵子が .sql のファむルず、.xml のファむルがある。詳しくは Open 棟梁の説明曞をご芧ください

  13. 自動生成した Dao クラスをサンプルプログラムに含めるため、Visual Studio でサンプルプログラムを開き、AppCode\sample\Dao フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「既存の項目の远加(G)」を遞択したす。

  14. 既存項目の远加ダむアログで、C:\root\DaoOrders.vb ず C:\root\DaoOrder_Details.vb ファむルを遞択し、「远加(A)」ボタンをクリックしたす。

  15. C:\root フォルダ盎䞋に生成された SQL ファむル・XML ファむルを、C:\root\files\resource\Sql フォルダに移動したす。

  16. D 局自動生成ツヌルを終了したす。

4.5.2 SQL ファむルの䜜成

D 局自動生成ツヌルでは、単玔な CRUD 凊理を行う Dao クラスや SQL ファむルを生成できたす。しかし、耇数のテヌブルを結合 (JOIN) させる SQL など、単玔な CRUD 凊理ではない SQL は、個別に䜜成する必芁がありたす。

  1. C:\root\files\resource\Sql フォルダに、SelectOrders.sql ファむルを䜜成したす。

  2. SelectOrders.sql に、以䞋の SQL 文を蚘述したす。

    SELECT
        Orders.OrderID, Customers.CompanyName, Customers.ContactName, Employees.LastName As EmployeeLastName, Employees.FirstName As EmployeeFirstName, Orders.OrderDate
    FROM
        Orders
            INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID
            INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID

4.5.3 DAO 集玄クラスの䜜成

本チュヌトリアルでは、以䞋の 3 ぀の Dao クラスを䜿甚したす。

  • DaoOrders
    • Orders テヌブルぞのアクセス甚
  • DaoOrder_Details
    • Order Details テヌブルぞのアクセス甚
  • CmnDao (Open 棟梁の共通 Dao)
    • 4.5.2 項で䜜成した SQL ファむルを䜿甚したアクセス甚

これらの Dao クラスの呌び出しを制埡し、業務ロゞッククラス (B 局クラス) に察する窓口 (ファサヌド) ずなる、DAO 集玄クラスを䜜成したす。

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、AppCode\sample\Dao フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「クラスの远加(C)」を遞択したす。

  2. ConsolidatedLayerD.vb ずいう名前のクラスを远加したす。

  3. 以䞋のコヌドを ConsolidatedLayerD.vb に远加し、Open 棟梁が提䟛するクラスをむンポヌトしたす。

    ' Open棟梁
    Imports Touryo.Infrastructure.Business.Dao
    Imports Touryo.Infrastructure.Public.Db
    
    ' 匕数・戻り倀クラス
    Imports ProjectX_sample.AppCode.sample.Common
  4. ConsolidatedLayerD クラスの宣蚀郚分を以䞋のように修正し、Open 棟梁の「DAO 集玄芪クラス」を継承させたす。

    Public Class ConsolidatedLayerD
        Inherits BaseConsolidateDao
  5. ConsolidatedLayerD クラスに、以䞋のようにコンストラクタを䜜成したす。

    Public Sub New(dam As BaseDam)
        MyBase.New(dam)
    End Sub
  6. ConsolidatedLayerD クラスに、泚文情報䞀芧を取埗する GetOrders メ゜ッドを䜜成したす。

    Public Function GetOrders(orderParameter As OrderParameterValue) As OrderReturnValue
        ' 戻り倀クラスを䜜成する
        Dim returnValue As New OrderReturnValue()
    
        ' 共通 DAO を䜜成する (SQL ファむルずしお、4.5.2 項で䜜成したファむルを䜿甚する)
        Dim dao As New CmnDao(Me.Dam)
        dao.SQLFileName = "SelectOrders.sql"
    
        ' 結果栌玍甚の DataTable
        Dim table As New System.Data.DataTable()
    
        ' DB から泚文情報䞀芧を取埗し、DataTable に栌玍する
        dao.ExecSelectFill_DT(table)
    
        ' 戻り倀クラスに泚文情報䞀芧を栌玍し、B 局クラスに返す
        returnValue.Orders = table
        Return returnValue
    End Function
  7. 同様に、泚文 ID をもずに、泚文情報の詳现を取埗する GetOrderById メ゜ッドを䜜成したす。

    Public Function GetOrderById(orderParameter As OrderParameterValue) As OrderReturnValue
        ' 戻り倀クラスを䜜成する
        Dim returnValue As New OrderReturnValue()
    
        ' 自動生成した D 局クラスのむンスタンスを生成する
        Dim orderDao As New DaoOrders(Me.Dam)
        Dim orderDetailsDao As New DaoOrder_Details(Me.Dam)
    
        ' 泚文情報、泚文詳现情報を栌玍するための DataTable
        Dim orderTable As New System.Data.DataTable()
        Dim orderDetailsTable As New System.Data.DataTable()
    
        ' パラメヌタを蚭定する
        orderDao.PK_OrderID = orderParameter.OrderId
        orderDetailsDao.PK_OrderID = orderParameter.OrderId
    
        ' 泚文 ID をもずに泚文情報を怜玢する
        orderDao.D2_Select(orderTable)
        orderDetailsDao.D2_Select(orderDetailsTable)
    
        ' 戻り倀クラスに結果セットを栌玍し、B 局クラスに返す
        returnValue.Orders = orderTable
        returnValue.OrderDetails = orderDetailsTable
        Return returnValue
    End Function
  8. 同様に、画面で入力した泚文情報を DB に反映する UpdateOrder メ゜ッドを䜜成したす。

    Public Function UpdateOrder(orderParameter As OrderParameterValue) As OrderReturnValue
        ' 戻り倀クラスを䜜成する
        Dim returnValue As New OrderReturnValue()
    
        ' 自動生成した D 局クラスのむンスタンスを生成する
        Dim orderDao As New DaoOrders(Me.Dam)
        Dim orderDetailsDao As New DaoOrder_Details(Me.Dam)
    
        ' 泚文情報、泚文詳现情報を栌玍するための DataTable
        Dim orderTable As System.Data.DataTable = orderParameter.Orders
        Dim orderDetailsTable As System.Data.DataTable = orderParameter.OrderDetails
    
        ' レコヌドの状態を確認し、修正されおいたら DB を曎新する
        If orderTable.Rows(0).RowState = System.Data.DataRowState.Modified Then
            ' 泚文情報サマリ曎新甚のパタメヌタを蚭定する
            orderDao.PK_OrderID = orderTable.Rows(0)("OrderId")
            orderDao.Set_OrderDate_forUPD = orderTable.Rows(0)("OrderDate")
            orderDao.Set_RequiredDate_forUPD = orderTable.Rows(0)("RequiredDate")
            orderDao.Set_ShippedDate_forUPD = orderTable.Rows(0)("ShippedDate")
            orderDao.Set_ShipVia_forUPD = orderTable.Rows(0)("ShipVia")
            orderDao.Set_Freight_forUPD = orderTable.Rows(0)("Freight")
            orderDao.Set_ShipName_forUPD = orderTable.Rows(0)("ShipName")
            orderDao.Set_ShipAddress_forUPD = orderTable.Rows(0)("ShipAddress")
            orderDao.Set_ShipCity_forUPD = orderTable.Rows(0)("ShipCity")
            orderDao.Set_ShipRegion_forUPD = orderTable.Rows(0)("ShipRegion")
            orderDao.Set_ShipPostalCode_forUPD = orderTable.Rows(0)("ShipPostalCode")
            orderDao.Set_ShipCountry_forUPD = orderTable.Rows(0)("ShipCountry")
            ' 泚文情報サマリを曎新する
            orderDao.D3_Update()
        End If
    
        For Each row As System.Data.DataRow In orderDetailsTable.Rows
            ' レコヌドの状態を確認し、修正されおいたら DB を曎新する
            If row.RowState = System.Data.DataRowState.Modified Then
                ' 泚文情報明现曎新甚のパラメヌタを蚭定する
                orderDetailsDao.PK_OrderID = row("OrderId")
                orderDetailsDao.PK_ProductID = row("ProductId")
                orderDetailsDao.Set_UnitPrice_forUPD = row("UnitPrice")
                orderDetailsDao.Set_Quantity_forUPD = row("Quantity")
                orderDetailsDao.Set_Discount_forUPD = row("Discount")
    
                ' 泚文情報明现を曎新する
                orderDetailsDao.D3_Update()
            End If
        Next
        ' 戻り倀クラスをB局クラスに返す曎新凊理のため、戻り倀はなし
        Return returnValue
    End Function

4.6 B局の䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、AppCode\sample\Business フォルダを遞択し、ツヌルバヌの「プロゞェクト(P)」-「クラスの远加(C)」を遞択したす。

  2. OrdersLogic.vb ずいう名前のクラスを远加したす。

  3. 以䞋のコヌドを OrdersLogic.vb に远加し、Open 棟梁が提䟛するクラス、匕数・戻り倀クラス、D 局クラスをむンポヌトしたす。

    ' 業務フレヌムワヌク
    Imports Touryo.Infrastructure.Business.Business
    Imports Touryo.Infrastructure.Business.Common
    Imports Touryo.Infrastructure.Business.Dao
    Imports Touryo.Infrastructure.Business.Exceptions
    Imports Touryo.Infrastructure.Business.Presentation
    Imports Touryo.Infrastructure.Business.Util
    
    ' フレヌムワヌク
    Imports Touryo.Infrastructure.Framework.Business
    Imports Touryo.Infrastructure.Framework.Common
    Imports Touryo.Infrastructure.Framework.Dao
    Imports Touryo.Infrastructure.Framework.Exceptions
    Imports Touryo.Infrastructure.Framework.Presentation
    Imports Touryo.Infrastructure.Framework.Util
    Imports Touryo.Infrastructure.Framework.Transmission
    
    ' 郚品
    Imports Touryo.Infrastructure.Public.Db
    Imports Touryo.Infrastructure.Public.IO
    Imports Touryo.Infrastructure.Public.Log
    Imports Touryo.Infrastructure.Public.Str
    Imports Touryo.Infrastructure.Public.Util
    
    ' 匕数・戻り倀クラス
    Imports ProjectX_sample.AppCode.sample.Common
    
    ' DAO クラス
    Imports ProjectX_sample.AppCode.sample.Dao
  4. OrdersLogic クラス宣蚀郚分を以䞋のように修正し、Open 棟梁の「業務芪クラス 2」を継承させたす。

    Public Class OrdersLogic
        Inherits MyFcBaseLogic
  5. OrdersLogic クラスに、泚文情報䞀芧取埗甚の UOC_GetOrders メ゜ッド・泚文 ID をもずに泚文情報の詳现を取埗するための UOC_GetOrderById メ゜ッド・泚文情報曎新甚の UOC_UpdateOrder メ゜ッドを䜜成したす。ただし、DAO クラスの呌び出しは DAO 集玄クラスが行いたすので、B 局クラスは、P 局クラスず DAO 集玄クラスの䞭継のみを行いたす。

    Private Sub UOC_GetOrders(orderParameter As OrderParameterValue)
        '    DAO 集玄クラスを生成する
        Dim facade As New ConsolidatedLayerD(Me.GetDam())
    
        ' 泚文情報䞀芧を取埗する
        Dim returnValue As OrderReturnValue = facade.GetOrders(orderParameter)
    
        ' 戻り倀クラスを返す
        Me.ReturnValue = returnValue
    End Sub
    
    Private Sub UOC_GetOrderById(orderParameter As OrderParameterValue)
        ' DAO 集玄クラスを生成する
        Dim facade As New ConsolidatedLayerD(Me.GetDam())
    
        ' 泚文情報の詳现を取埗する
        Dim returnValue As OrderReturnValue = facade.GetOrderById(orderParameter)
    
        ' 戻り倀クラスを返す
        Me.ReturnValue = returnValue
    End Sub
    
    Private Sub UOC_UpdateOrder(orderParameter As OrderParameterValue)
        ' DAO 集玄クラスを生成する
        Dim facade As New ConsolidatedLayerD(Me.GetDam())
    
        ' 泚文情報をDBに登録する
        Dim returnValue As OrderReturnValue = facade.UpdateOrder(orderParameter)
    
        ' 戻り倀クラスを返す
        Me.ReturnValue = returnValue
    End Sub

    【泚意】Open 棟梁の「業務芪クラス 2」である MyFcBaseLogic クラスを継承した B 局クラスでは、P 局から呌び出されるメ゜ッド名は UOC_xx (xx は任意) ずする必芁がありたす。P 局から ”xx” の郚分をパラメヌタずしお枡すこずで、Open 棟梁により UOC_xx メ゜ッドに凊理が振り分けられたす。(埌述)

4.7 P局画面コヌドクラスの䜜成

4.7.1 マスタヌペヌゞの画面コヌドクラス (TouryoMaster.master.vb) の䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、Aspx\Common\TouryoMaster.master.vb ファむルを開きたす。

  2. 以䞋のコヌドを TouryoMaster.master.vb に远加し、Open 棟梁の名前空間をむンポヌトしたす。

    Imports Touryo.Infrastructure.Framework.Presentation
  3. クラス宣蚀郚分を以䞋のように修正し、Open 棟梁の「マスタヌペヌゞ芪クラス」を継承させたす。

    Public Partial Class TouryoMaster
        Inherits BaseMasterController

    【泚意】
    Open 棟梁は、マスタヌペヌゞ・コンテンツペヌゞ内のコントロヌル取埗甚のナヌティリティメ゜ッドを提䟛しおいたす。この時、マスタヌペヌゞが「マスタヌペヌゞ芪クラス」を継承しおいないず正垞にコントロヌルを取埗できなくなりたす。このため、このナヌティリティ メ゜ッドを利甚する堎合は、「マスタヌペヌゞ芪クラス」を継承させる必芁がありたす。(詳しくは Open 棟梁の利甚ガむド (纏め者線) をご芧ください)

4.7.2 メニュヌ画面の画面コヌドクラス (menu.aspx.vb) の䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、Aspx\start\menu.aspx.vb ファむルを開きたす。

  2. menu.aspx.vb に、4.2.5 項で远加した LinkButton の Click むベントに察するハンドラメ゜ッドを远加したす。

    Protected Function UOC_lbnGetOrdersList_Click(eventArgs As FxEventArgs) As String
        ' SCDefinitions.xml に定矩したラベルをもずに画面遷移を行う
        Return "List"
    End Function
    
    Protected Function UOC_lbnShowDialog_Click(eventArgs As FxEventArgs) As String
        ' ダむアログを衚瀺する
        Me.ShowNormalScreen("/ProjectX_sample/Aspx/sample/test.pdf")
    
        ' 空文字を返す
        Return String.Empty
    End Function

    【泚意】
    Open 棟梁を甚いた堎合、Button などのコントロヌルぞのむベントハンドラは、䞊述のように UOC_[コントロヌル名]_[むベント名] ずいう名前のメ゜ッドで定矩したす。(詳しくは Open 棟梁の利甚ガむド (共通線) をご芧ください)

4.7.3 泚文情報䞀芧画面の画面コヌドクラス (OrdersList.aspx.vb) の䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、Aspx\sample\OrdersList.aspx.vb ファむルを開きたす。

  2. 以䞋のコヌドを OrdersList.aspx.vb に远加し、Open 棟梁の名前空間をむンポヌトしたす。

    ' 業務フレヌムワヌク
    Imports Touryo.Infrastructure.Business.Business
    Imports Touryo.Infrastructure.Business.Common
    Imports Touryo.Infrastructure.Business.Dao
    Imports Touryo.Infrastructure.Business.Exceptions
    Imports Touryo.Infrastructure.Business.Presentation
    Imports Touryo.Infrastructure.Business.Util
    
    ' フレヌムワヌク
    Imports Touryo.Infrastructure.Framework.Business
    Imports Touryo.Infrastructure.Framework.Common
    Imports Touryo.Infrastructure.Framework.Dao
    Imports Touryo.Infrastructure.Framework.Exceptions
    Imports Touryo.Infrastructure.Framework.Presentation
    Imports Touryo.Infrastructure.Framework.Util
    Imports Touryo.Infrastructure.Framework.Transmission
    
    ' 郚品
    Imports Touryo.Infrastructure.Public.Db
    Imports Touryo.Infrastructure.Public.IO
    Imports Touryo.Infrastructure.Public.Log
    Imports Touryo.Infrastructure.Public.Str
    Imports Touryo.Infrastructure.Public.Util
    
    ' B 局クラス
    Imports ProjectX_sample.AppCode.sample.Business
    
    ' 匕数・戻り倀クラス
    Imports ProjectX_sample.AppCode.sample.Common
  3. クラス宣蚀郚分を以䞋のように修正し、Open 棟梁の「画面芪クラス 2」を継承させたす。

    Public Partial Class Aspx_sample_OrdersList
        Inherits MyBaseController
  4. 電球マヌクをクリックし、「抜象クラスの実装」を遞択したす。

  5. 自動生成された Page_Load メ゜ッドを削陀したす。

  6. 画面ロヌド時に泚文情報の䞀芧を取埗するため、以䞋のように UOC_FormInit メ゜ッドをオヌバヌラむドしたす。なお、ポストバック時の凊理はないため、UOC_FormInit_PostBack メ゜ッドから throw new NotImplementedException(); を削陀し、空の状態にする。

    Protected Overrides Sub UOC_FormInit()
        ' 匕数クラスを生成
        ' (F局クラスでUOC_GetOrdersメ゜ッドを呌び出すように、パラメヌタずしお"GetOrders"を枡す)
        Dim param As New OrderParameterValue(Me.ContentPageFileNoEx, "", "GetOrders", "SQL", Me.UserInfo)
    
        ' 戻り倀クラスを生成
        Dim returnValue As OrderReturnValue
    
        ' 局呌出し
        Dim logic As new OrdersLogic()
        returnValue = DirectCast(logic.DoBusinessLogic(param), OrderReturnValue)
    
        ' 結果をGridViewに衚瀺
        Me.gvwOrdersList.DataSource = returnValue.Orders
        Me.gvwOrdersList.DataBind()
    End Sub
    
    Protected Overrides Sub UOC_FormInit_PostBack()
    End Sub
  7. GridView の各行のボタンをクリックしたずきに、泚文情報詳现画面に遷移するためのメ゜ッドを OrdersList.aspx.vb に远加する。

    Protected Function UOC_gvwOrdersList_RowCommand(eventArgs As FxEventArgs) As String
        ' 遞択された行のむンデックスを取埗する
        Dim RowIndex As Integer = Integer.Parse(eventArgs.PostBackValue)
    
        ' GridViewから、遞択された行のOrderIdを取埗する
        Dim orderId As String = Me.gvwOrdersList.Rows(RowIndex).Cells(1).Text
    
        ' OrderIdをセッションに栌玍する
        Session("OrderId") = OrderId
    
        ' SCDefinitions.xml に定矩したラベルをもずに画面遷移を行う
        Return "Detail"
    End Function

4.7.4 泚文情報詳现画面の画面コヌドクラス (OrderDetails.aspx.vb) の䜜成

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、Aspx\sample\OrderDetails.aspx.vb ファむルを開きたす。

  2. 4.7.3 項ず同じように、OrderDetails.aspx.vb に぀いおも、Open 棟梁の「画面芪クラス 2」を継承させ、UOC_FormInit メ゜ッド、UOC_FormInit_PostBack メ゜ッドを䜜成したす。

  3. 自動生成された Page_Load メ゜ッドを削陀したす。

  4. 画面ロヌド時に OrderId を元に泚文の詳现情報を取埗するよう、以䞋のように UOC_FormInit メ゜ッドをオヌバヌラむドしたす。なお、ポストバック時の凊理はないため、UOC_FormInit_PostBack メ゜ッドから throw new NotImplementedException(); を削陀し、空の状態にしたす。

    Protected Overrides Sub UOC_FormInit()
        ' セッションから、OrderIdの倀を取埗
        Dim OrderId As String = Session("OrderId").ToString()
    
        ' 匕数クラスを生成
        ' (F局クラスでUOC_GetOrderByIdメ゜ッドを呌び出すように、パラメヌタずしお"GetOrderById"を枡す)
        Dim param As New OrderParameterValue(Me.ContentPageFileNoEx, "", "GetOrderById", "SQL", Me.UserInfo)
    
        ' 怜玢条件ずしおOrderIdを枡す
        param.OrderId = OrderId
    
        ' 戻り倀クラスを生成
        Dim returnValue As OrderReturnValue
    
        ' 局呌出し
        Dim logic As New OrdersLogic()
        returnValue = DirectCast(logic.DoBusinessLogic(param), OrderReturnValue)
    
        ' 泚文情報をセッションに栌玍する
        Session("Orders") = returnValue.Orders
        Session("OrderDetails") = returnValue.OrderDetails
    
        ' 結果をグリッドに衚瀺
        Me.gvwOrderSummary.DataSource = returnValue.Orders
        Me.gvwOrderSummary.DataBind()
        Me.gvwOrderDetails.DataSource = returnValue.OrderDetails
        Me.gvwOrderDetails.DataBind()
    End Sub
    
    Protected Overrides Sub UOC_FormInit_PostBack()
    End Sub
  5. Visual Studio の゜リュヌション ゚クスプロヌラヌで、Aspx\sample\OrderDetails.aspx ファむルを開きたす。

  6. 泚文情報 (サマリ) を衚瀺するための gvwOrderSummary コントロヌルを遞択し、プロパティりィンドりの「むベント」アむコンをクリックしたす。

  7. むベントの䞀芧から、RowEditing RowCancelingEdit むベントをダブルクリックしたす。

  8. OrderDetails.aspx.vb に gvwOrderSummary_RowEditing メ゜ッド、gvwOrderSummary_RowCancelingEdit メ゜ッドが生成されたすので、以䞋のように実装したす。

    Protected Sub gvwOrderSummary_RowEditing(sender As Object, e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvwOrderSummary.RowEditing
        ' 泚文情報サマリを線集モヌドに切り替える
        Me.gvwOrderSummary.EditIndex = e.NewEditIndex
        Me.gvwOrderSummary.DataSource = DirectCast(Session("Orders"), System.Data.DataTable)
        Me.gvwOrderSummary.DataBind()
    
        ' 䞻キヌ、倖郚キヌ列は線集䞍可ずする
        DirectCast(Me.gvwOrderSummary.Rows(e.NewEditIndex).Cells(1).Controls(0), TextBox).Enabled = False
        DirectCast(Me.gvwOrderSummary.Rows(e.NewEditIndex).Cells(2).Controls(0), TextBox).Enabled = False
        DirectCast(Me.gvwOrderSummary.Rows(e.NewEditIndex).Cells(3).Controls(0), TextBox).Enabled = False
    End Sub
    
    Protected Sub gvwOrderSummary_RowCancelingEdit(sender As Object, e As System.Web.UI.WebControls.GridViewCancelEditEventArgs) Handles gvwOrderSummary.RowCancelingEdit
        ' 泚文情報サマリを読み取り専甚モヌドに切り替える
        Me.gvwOrderSummary.EditIndex = -1
        Me.gvwOrderSummary.DataSource = DirectCast(Session("Orders"), System.Data.DataTable)
        Me.gvwOrderSummary.DataBind()
    End Sub

    【泚意】
    Open 棟梁の P 局むベント凊理機胜は、GridView コントロヌルの RowEditing むベント、RowCancelingEdit むベントをサポヌトしおいたせん。このため、これらのむベントに぀いおは、.NET 暙準のむベントハンドラ機胜を䜿甚したす。この時、Open 棟梁によるフロヌ制埡機胜 (むベント前凊理・埌凊理制埡、䟋倖凊理制埡) が利甚できたせん。これらのむベントに぀いおも、Open 棟梁のフロヌ制埡機胜を利甚したい堎合は、「画面芪クラス 1」たたは「画面芪クラス 2」のカスタマむズが必芁になりたす。(詳しくは Open 棟梁の利甚ガむド (共通線) をご芧ください)

  9. 泚文情報 (サマリ) の修正内容を保存するためのメ゜ッドを OrderDetails.aspx.vb に远加したす。

    Protected Function UOC_gvwOrderSummary_RowUpdating(eventArgs As FxEventArgs, e As GridViewUpdateEventArgs) As String
        ' 泚文情報サマリの修正内容を保存する
        Dim orders As System.Data.DataTable = DirectCast(Session("Orders"), System.Data.DataTable)
        For Each key As String In e.NewValues.Keys
                Orders.Rows(0)(key) = e.NewValues(key)
        Next
    
        ' 泚文情報サマリを読み取り専甚モヌドに切り替える
        Me.gvwOrderSummary.EditIndex = -1
        Me.gvwOrderSummary.DataSource = DirectCast(Session("Orders"), System.Data.DataTable)
        Me.gvwOrderSummary.DataBind()
    
        ' 空文字を返す (画面遷移しない)
        Return String.Empty
    End Function
  10. 同様に、泚文情報 (明现) を衚瀺するための gvwOrderDetails コントロヌルに぀いおも、RowEditing むベント、RowCancelingEdit むベント、UOC_gvwOrderDetails_RowUpdating メ゜ッドを远加し、それぞれ以䞋のように実装したす。

    Protected Sub gvwOrderDetails_RowEditing(sender As object, e As GridViewEditEventArgs)
        ' 泚文情報明现を線集モヌドに切り替える
        Me.gvwOrderDetails.EditIndex = e.NewEditIndex
        Me.gvwOrderDetails.DataSource = DirectCast(Session("OrderDetails"), System.Data.DataTable)
        Me.gvwOrderDetails.DataBind()
    
        ' 䞻キヌ、倖郚キヌ列は線集䞍可ずする
        DirectCast(Me.gvwOrderDetails.Rows(e.NewEditIndex).Cells(1).Controls(0),TextBox).Enabled = false
        DirectCast(Me.gvwOrderDetails.Rows(e.NewEditIndex).Cells(2).Controls(0),TextBox).Enabled = false
    End Sub
    
    Protected Sub gvwOrderDetails_RowCancelingEdit(sender As Object sender, e As GridViewCancelEditEventArgs)
        ' 泚文情報明现を読み取り専甚モヌドに切り替える
        Me.gvwOrderDetails.EditIndex = -1
        Me.gvwOrderDetails.DataSource = DirectCast(Session("OrderDetails"), System.Data.DataTable)
        Me.gvwOrderDetails.DataBind()
    End Sub
    
    Protected Function UOC_gvwOrderDetails_RowUpdating(eventArgs As FxEventArgs, e As GridViewUpdateEventArgs) As String
        ' 線集した倀で泚文情報サマリを曎新する
        Dim OrderDetails As System.Data.DataTable = DirectCast(Session("OrderDetails"), System.Data.DataTable)
        For Each key As String In e.NewValues.Keys
            OrderDetails.Rows(e.RowIndex)(key) = e.NewValues(key)
        Next
    
        ' 泚文情報明现を読み取り専甚モヌドに切り替える
        Me.gvwOrderDetails.EditIndex = -1
        Me.gvwOrderDetails.DataSource = DirectCast(Session("OrderDetails"), System.Data.DataTable)
        Me.gvwOrderDetails.DataBind()
    
        ' 空文字を返す (画面遷移しない)
        Return String.Empty
    End Function
  11. 修正内容を DB に反映させるためのメ゜ッドを OrderDetails.aspx.vb に远加する。

    Protected Function UOC_btnUpdateOrder_Click(eventArgs As FxEventArgs) As String
        ' グリッドの倀をセッションから取埗する
        Dim orderTable As System.Data.DataTable = DirectCast(Session("Orders"), System.Data.DataTable)
        Dim orderDetailTable As System.Data.DataTable = DirectCast(Session("OrderDetails"), System.Data.DataTable)
        ' 匕数クラスを生成
        Dim param As New OrderParameterValue(Me.Title, "", "UpdateOrder", "SQL", Me.UserInfo)
    
        ' 業務ロゞックに匕数ずしおグリッドの倀を枡す
        param.Orders = orderTable
        param.OrderDetails = orderDetailTable
    
        ' 戻り倀クラスを生成
        Dim returnValue As OrderReturnValue
    
        ' 局呌出し
        Dim logic As New OrdersLogic()
        returnValue = DirectCast(logic.DoBusinessLogic(param), OrderReturnValue)
    
        ' 空文字を返す (画面遷移しない)
        Return String.Empty
    End Function

4.8 その他

4.8.1 アプリケヌション構成ファむル (Web.config) の蚭定内容の確認

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、web.config ファむルを開きたす。

  2. connectionStrings セクションを確認し、"ConnectionString_SQL" ずいう名前の接続文字列蚭定が、Northwind デヌタベヌスを指しおいるこずを確認したす。

    <connectionStrings>
        <!-- SQL Server / SQL Client甹 -->
        <add name="ConnectionString_SQL" connectionString="Data Source=localhost\sqlexpress;Initial Catalog=Northwind;Integrated Security=True;"/>
    </connectionStrings>

4.9 動䜜確認

4.9.1 ASP.NET 状態サヌビスの開始

  1. スタヌトメニュヌの「プログラムずファむルの怜玢」ボックスで services.msc を実行したす。

  2. サヌビス画面から「ASP.NET 状態サヌビス」を右クリックし、「開始」を遞択したす。

  3. 「ASP.NET 状態サヌビス」の状態が「開始」になったこずを確認したす。

4.9.2 むントラネット セキュリティ蚭定の倉曎

  1. スタヌトメニュヌの「プログラムずファむルの怜玢」ボックスで inetcpl.cpl を実行したす。

  2. むンタヌネットのプロパティダむアログで、「セキュリティ」タブを遞択したす。衚瀺されたゟヌンの䞭で、「ロヌカル むントラネット」を遞択し、「サむト」ボタンをクリックしたす。

  3. ロヌカル むントラネットダむアログで、以䞋のように蚭定し、「OK」ボタンを抌䞋クリックしたす。

    • むントラネットのネットワヌクを自動的に怜出する: チェックなし
    • 䞊蚘以倖: チェックあり
  4. 「OK」ボタンをクリックし、むンタヌネット オプションダむアログを閉じたす。

4.9.3 Visual Studio によるデバッグ実行

  1. Visual Studio の゜リュヌション ゚クスプロヌラヌで、Aspx\start\menu.aspx を右クリックし、「スタヌト ペヌゞに蚭定」を遞択したす。

  2. Visual Studio でサンプルプログラムをデバッグ実行したす。

  3. ブラりザが起動し、ログむン画面が衚瀺されたすので、以䞋のように倀を入力し、「ログむン」ボタンを抌䞋したす。

    • ナヌザID: 空でない任意の文字列
    • パスワヌド: 任意の文字列 (空でもよい)
  4. メニュヌ画面が衚瀺されるので、「泚文情報の䞀芧を取埗」リンクを抌䞋したす。

  5. OrdersList.aspx に遷移し、泚文情報の䞀芧が衚瀺されるこずを確認し、任意の行の「遞択」ボタンを抌䞋したす。

  6. OrderDetails.aspx に遷移し、泚文情報の詳现が衚瀺されるこずを確認し、修正したい行の「線集」リンクをクリックしたす。

  7. 「線集」リンクをクリックした行が線集モヌドになりたすので、任意の倀に修正したす。修正が完了したら、「曎新」リンクをクリックしお修正内容を保存したす。

  8. 「修正内容を反映」ボタンを抌䞋しお、修正した内容を DB に反映させたす。

  9. 以䞋のコマンドを実行し、修正した内容で DB の倀が曎新されおいるこずを確認したす。なお、以䞋のコマンドの䞭で【遞択した泚文番号】の箇所は、先ほど遞択した泚文番号 (OrderID) に眮き換えおください。

    "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S localhost\SQLExpress -E -d Northwind -Q "Select * From Orders Inner Join [Order Details] On Orders.OrderId=[Order Details].OrderId Where Orders.OrderId=【遞択した泚文番号】"
  10. 「メニュヌ画面」リンクをクリックしお、メニュヌ画面に戻りたす。

  11. 「モヌダルダむアログを衚瀺」リンクをクリックしたす。

  12. ダむアログ画面䞊で PDF ファむルが衚瀺されるこずを確認し、ダむアログを閉じたす。

  13. ブラりザのアドレスバヌに http://localhost:9999/ProjectX_sample/Aspx/sample/OrdersList.aspx ず入力し、実行したす。

  14. Open 棟梁の゚ラヌメッセヌゞが衚瀺されるこずを確認したす。

    【泚意】
    この゚ラヌメッセヌゞは、OrdersList.aspx に察する Get メ゜ッドでの画面遷移が蚱可されおいないこずを瀺しおいる。これは、4.3.2 項で泚文情報䞀芧画面・詳现画面を SCDefinitions.xml に定矩したずき、directLink=”deny” ず定矩したためです。(詳しくは Open 棟梁の利甚ガむド (各機胜線) をご芧ください)

4.9.4 トレヌスログの確認

  1. C:\root\files\resource\Log\ACCESS.yyyy-mm-dd.log をメモ垳などで開きたす。(yyyy-mm-dd には、実行日付が入りたす)

  2. 各画面ぞのアクセスがトレヌスログずしお蚘録されおいるこずを確認したす。(以䞋はトレヌスログを抜粋したものです。OrderList 画面、OrderDetails 画面がそれぞれトレヌスされおいるこずが分かりたす)

    [2017/04/10 11:36:32,663],[DEBUG],[5],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2017/04/10 11:36:32,664],[INFO ],[5],,user01,127.0.0.1,init,OrdersList
    [2017/04/10 11:36:32,670],[INFO ],[5],,user01,127.0.0.1,----->>,OrdersList,,GetOrders,
    [2017/04/10 11:36:32,892],[INFO ],[5],,user01,127.0.0.1,<<-----,OrdersList,,GetOrders,,221,0
    [2017/04/10 11:36:32,935],[DEBUG],[5],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,271,63
    [2017/04/10 11:36:46,756],[DEBUG],[18],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2017/04/10 11:36:46,814],[INFO ],[18],,user01,127.0.0.1,postback,OrdersList
    [2017/04/10 11:36:46,815],[INFO ],[18],,user01,127.0.0.1,----->,OrdersList,gvwOrdersList
    [2017/04/10 11:36:46,816],[INFO ],[18],,user01,127.0.0.1,<-----,OrdersList,gvwOrdersList,,1,0
    [2017/04/10 11:36:46,912],[DEBUG],[17],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2017/04/10 11:36:46,914],[INFO ],[17],,user01,127.0.0.1,init,OrderDetails
    [2017/04/10 11:36:46,914],[INFO ],[17],,user01,127.0.0.1,----->>,OrderDetails,,GetOrderById,
    [2017/04/10 11:36:47,044],[INFO ],[17],,user01,127.0.0.1,<<-----,OrderDetails,,GetOrderById,,129,0
    [2017/04/10 11:36:47,055],[DEBUG],[17],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,142,0
    [2017/04/10 11:36:50,343],[DEBUG],[5],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2017/04/10 11:36:50,344],[INFO ],[5],,user01,127.0.0.1,postback,OrderDetails
    [2017/04/10 11:36:50,345],[INFO ],[5],,user01,127.0.0.1,----->,OrderDetails,gvwOrderDetails
    [2017/04/10 11:36:50,345],[INFO ],[5],,user01,127.0.0.1,<-----,OrderDetails,gvwOrderDetails,,0,0
    [2017/04/10 11:36:50,350],[DEBUG],[5],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,4,0
    [2017/04/10 11:36:55,690],[DEBUG],[5],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2017/04/10 11:36:55,692],[INFO ],[5],,user01,127.0.0.1,postback,OrderDetails
    [2017/04/10 11:36:55,693],[INFO ],[5],,user01,127.0.0.1,----->,OrderDetails,gvwOrderDetails
    [2017/04/10 11:36:55,693],[INFO ],[5],,user01,127.0.0.1,<-----,OrderDetails,gvwOrderDetails,,0,0
    [2017/04/10 11:36:55,693],[INFO ],[5],,user01,127.0.0.1,----->,OrderDetails,gvwOrderDetails
    [2017/04/10 11:36:55,694],[INFO ],[5],,user01,127.0.0.1,<-----,OrderDetails,gvwOrderDetails,,1,0
    [2017/04/10 11:36:55,695],[DEBUG],[5],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,4,0
    [2017/04/10 11:36:57,281],[DEBUG],[9],,,127.0.0.1,-----↓,Global.asax,Application_OnPreRequest
    [2017/04/10 11:36:57,283],[INFO ],[9],,user01,127.0.0.1,postback,OrderDetails
    [2017/04/10 11:36:57,283],[INFO ],[9],,user01,127.0.0.1,----->,OrderDetails,btnUpdateOrder
    [2017/04/10 11:36:57,286],[INFO ],[9],,user01,127.0.0.1,----->>,,,UpdateOrder,
    [2017/04/10 11:36:57,362],[INFO ],[9],,user01,127.0.0.1,<<-----,,,UpdateOrder,,76,16
    [2017/04/10 11:36:57,372],[INFO ],[9],,user01,127.0.0.1,<-----,OrderDetails,btnUpdateOrder,,88,16
    [2017/04/10 11:36:57,373],[DEBUG],[9],,,127.0.0.1,-----↑,Global.asax,Application_OnPostRequest,,,91,16
  3. C:\root\files\resource\Log\SQLTRACE.yyyy-mm-dd.log をメモ垳などで開きたす。(yyyy-mm-dd には、実行日付が入りたす)

  4. Orders テヌブル・Order Details テヌブルに察する SQL 文がトレヌスずしお蚘録されおいるこずを確認したす。以䞋は SQL トレヌスログから、SELECT 文の実行ログを抜粋したものです

    [2017/04/10 11:36:32,892],[INFO ],[5],19,0,[commandText]:SELECT Orders.OrderID, Customers.CompanyName, Customers.ContactName, Employees.LastName As EmployeeLastName, Employees.FirstName As EmployeeFirstName, Orders.OrderDate FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID    [commandParameter]:
    [2017/04/10 11:36:46,983],[INFO ],[17],3,0,[commandText]: -- DaoOrders_D2_Select -- 2012/8/6 日立 倪郎 SELECT [OrderID], [CustomerID], [EmployeeID], [OrderDate], [RequiredDate], [ShippedDate], [ShipVia], [Freight], [ShipName], [ShipAddress], [ShipCity], [ShipRegion], [ShipPostalCode], [ShipCountry] FROM [Orders] WHERE [OrderID] = @OrderID    [commandParameter]:OrderID=10248,
    [2017/04/10 11:36:47,043],[INFO ],[17],1,0,[commandText]: -- DaoOrder_Details_D2_Select -- 2012/8/6 日立 倪郎 SELECT [OrderID], [ProductID], [UnitPrice], [Quantity], [Discount] FROM [Order Details] WHERE [OrderID] = @OrderID    [commandParameter]:OrderID=10248,
⚠ **GitHub.com Fallback** ⚠