ASP.NET実践:Webコンポーネントのデータバインドコントロールインスタンスの確立と実行

11487 ワード

この文書には、WebPartデータバインディングコントロールを確立して実行するための説明が含まれており、「Webコンポーネントのデータバインディングコントロールインスタンス」に完全なコードインスタンスが記載されています.コードインスタンスでは、同じWebPartクラスから継承されているため、Webコンポーネントのアプリケーションに参加できるGridViewコントロールをデータソースにバインドするカスタムサーバコントロールを作成する方法を示します.この文書では、コードインスタンスをコンパイルし、そのコントロールをWebコンポーネントのコントロールとして実行するためにASPを構成するための情報を提供します.NET Webアプリケーション.

WebPartコントロールのコンパイル


コードインスタンスを実行するには、ソースコードをコンパイルする必要があります.それを明確にコンパイルし、結果アセンブリをWebサイトのBinディレクトリまたはグローバルアセンブリキャッシュに保存できます.また、ソースコードをWebサイトのAppに保存することもできます.Codeディレクトリでは、実行時に動的にコンパイルできます.本明細書のコードインスタンスは、動的コンパイルを使用します.コンパイル方法のプレゼンテーションの実践については、「ASP.NET実践:カスタムサーバコントロールを開発して使用する].
動的コンパイルWebPartデータバインドコントロール
  • Webアプリケーションのルートディレクトリで、App_を作成します.コードディレクトリ.
  • このカスタムWebPartデータバインドコントロールのソースコードは、文書[Webコンポーネントのデータバインドコントロールの例]から得られる.ソースコードをAppに保存するコードディレクトリにあります.動的コンパイルを使用しているため、ファイルの名前は任意に指定できますが、ファイルには適切な拡張子が必要であり、使用するプログラミング言語(.csや.vbなど)に対応する必要があります.

  • Webコンポーネントアプリケーションでのコントロールの使用


    Webコンポーネントを使用するアプリケーションを構成するには、個別のユーザーを識別できるASPが必要です.NET Webサイト、およびアプリケーション・サービス(パーソナライズを含む)の処理を可能にするデータベース.この例(データバインドコントロールが使用されているため)については、Webにも必要です.configファイルにデータベース接続列を作成し、データソースがNorthwindインスタンスデータベースに接続できるようにします.アプリケーションが構成されると、WebコンポーネントアプリケーションごとにWebPartとサーバコントロールを管理するWebページごとに、WebPartManagerコントロールと少なくとも1つのWebPartZoneコントロールを追加する必要があります.次の2つ目の手順では、これらのコントロールを追加し、実行時にページ内のデータバインドコントロールの他のステップを完了するために必要な準備を説明します.
    ASPを構成する.NETアプリケーションによるWebコンポーネントコントロールの実行
  • は、あなたが個別のユーザによって識別できる構成されたASPを持っていることを確認する.NET Webアプリケーション.Webサイトの作成方法の指導が必要な場合は、「ASP.NET実践:IISで仮想ディレクトリを作成して構成する]または[ASP.NET実践:IISでローカルASPを作成して構成する.NETサイト.
  • は、構成されたパーソナライズド・プロバイダとデータベースを持っていることを確認します.Webコンポーネントのパーソナライゼーションは、デフォルトでは有効であり、Microsoft SQL Server Express(SSE)とともにSQLパーソナライズドプロバイダ(S qlPersonalizationProvider)を使用します.この文書では、SSEとデフォルトのSQLプロバイダを使用します.SSEが既にインストールされている場合は、構成する必要はありません.SSEは、Microsoft Visual Studio 2005のオプションのインストール部分であるか、Microsoftからのインストール部分である.com無料ダウンロード.MicrosoftSQL Serverのフルバージョンを使用するには、ASPをインストールして構成する必要があります.NETアプリケーションサービスデータベースは、SQLパーソナライズドプロバイダを構成してこのデータベースに接続します.詳細については、「SQL Serverのアプリケーション・サービス・データベースの作成と構成」を参照してください.また、カスタムプロバイダを作成して構成して、他の非SQLデータベースまたはストレージ・スキーマを使用することもできます.詳細とコードインスタンスについては、「メンバーシッププロバイダの実装」を参照してください.
  • データバインドコントロールをNorthwindインスタンスデータベースに接続できる接続列を作成します.このインスタンスを実行するには、SQL Serverが提供するNorthwindインスタンスデータベースにアクセスする必要があります.Northwindインスタンス・データベースをインストールしていない場合は、Microsoft Download Centerから関連するスクリプトをダウンロードして、このデータベースを作成してインストールできます.データベース接続列についての推奨方法は、アプリケーションのWebに保存することです.configファイルにあります.プロファイルの詳細については、[ASP.NETプロファイル].以下のコード例はWebを示す.configファイルのデータベース接続列.ローカルSSEで実行されているNorthwindデータベースインスタンスに接続されます.データベース・ファイル・パスの単一引用符は、エンティティとして表示されます(").なぜならWeb.configファイルはXMLファイルなので、このようにする必要があります.
    
    
    <connectionStrings>
    
      <add name="nwind" 
    
        connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=
    
        &quot;C:\SQL Server 2000 Sample Databases\NORTHWND.MDF&quot;;
    
        Initial Catalog=Northwind;Integrated Security=True;"
    
        providerName="System.Data.SqlClient" />
    
    </connectionStrings>
    
    
    ヒント:パスワードなどのデータベース接続列のすべての機密情報を暗号化することをお勧めします.暗号化構成データの詳細については、「ASP.NET実践:保護された構成を使用して構成情報を暗号化する].
  • はWeb.configファイルのセクションで、要素を追加します.これは、Webコンポーネントアプリケーションでは必要ありませんが、Webコンポーネントのいくつかの特徴の使用は、このセクションで構成する必要があります.WebPartデータバインドコントロールインスタンスは、そのステータスと属性データを含むプロファイルをエクスポートできます.Webコンポーネントアプリケーションのエクスポートフィーチャーはデフォルトで無効になっているため、セクションで有効にする必要があります.要素にenabledExportパラメータを追加し、次のコードインスタンスに示すようにtrueの値を設定します.
    
    
    <webParts enableExport="true" />
    
    
  • Webを保存して閉じる.configファイル.

  • WebページでWebコンポーネントコントロールを管理する準備
  • は、利用可能なWebコンポーネント表示モード間でユーザが変換できるようにするユーザコントロールをWebページに作成する.このコントロールおよび次のステップでのWebコンポーネントのデータバインドコントロールの実行は必須ではありませんが、多くのWebコンポーネントページで実用的な特徴です.エディタで、以下のユーザーコントロールのコードを貼り付け、Webアプリケーションのルートディレクトリにファイルを保存し、DisplayModeMenuCSと名付けます.ascxまたはDisplayModeMenuVB.ascx(あなたが使用しているプログラミング言語によって異なります).
    
    
    <!--                   ,               。 -->
    
    <%@ control language="C#" classname="DisplayModeMenuCS"%>
    
    
    
    <script runat="server">
    
      
    
     //              WebPartManager。
    
      WebPartManager _manager;
    
    
    
      void Page_Init(object sender, EventArgs e)
    
      {
    
        Page.InitComplete += new EventHandler(InitComplete);
    
      }  
    
    
    
      void InitComplete(object sender, System.EventArgs e)
    
      {
    
        _manager = WebPartManager.GetCurrentWebPartManager(Page);
    
    
    
        String browseModeName = WebPartManager.BrowseDisplayMode.Name;
    
    
    
        //                   。
    
        foreach (WebPartDisplayMode mode in _manager.SupportedDisplayModes)
    
        {
    
          String modeName = mode.Name;
    
          //              。
    
          if (mode.IsEnabled(_manager))
    
          {
    
            ListItem item = new ListItem(modeName + " Mode", modeName);
    
            DisplayModeDropdown.Items.Add(item);
    
          }
    
        }
    
    
    
      }
    
     
    
      //               。
    
      void DisplayModeDropdown_SelectedIndexChanged(object sender, 
    
        EventArgs e)
    
      {
    
        String selectedMode = DisplayModeDropdown.SelectedValue;
    
    
    
        WebPartDisplayMode mode = _manager.SupportedDisplayModes[selectedMode];
    
        if (mode != null)
    
          _manager.DisplayMode = mode;
    
    
    
      }
    
    
    
      void Page_PreRender(object sender, EventArgs e)
    
      {
    
        DisplayModeDropdown.SelectedValue = _manager.DisplayMode.Name;
    
      }
    
      
    
    </script>
    
    <div>
    
      <asp:DropDownList ID="DisplayModeDropdown" 
    
        runat="server"  
    
        AutoPostBack="true" 
    
        OnSelectedIndexChanged="DisplayModeDropdown_SelectedIndexChanged" />
    
    </div>
    
    
  • 新しいASPを作成する.NETページでは、カスタムWebPartコントロールやその他のコントロールを管理します.ページのPageコマンドの下にRegisterコマンドを追加して、さっき作成したユーザーコントロールを登録します.命令の内容は、あなたが使用しているプログラミング言語によって異なり、以下の例と同じように見えます.
    
    
    <%@ register src="displaymodecs.ascx" tagname="displaymodecs" 
    
        tagprefix="uc1" %>
    
    
  • カスタムWebPartコントロールにRegisterコマンドを追加しました.本明細書ではダイナミックコンパイルを使用しているので、Register命令にAssemblyパラメータを追加する必要はありません.Registerコマンドの下に、tagprefixパラメータに任意の文字列を割り当て、namespaceパラメータでカスタムコントロールのネーミングスペースを割り当てます.これは、次の例に示すように、使用するプログラミング言語に依存します.
    
    
    <%@ register tagprefix="aspSample" 
    
        namespace="Samples.AspNet.CS.Controls" %>
    
    
  • 要素の間に、次のコードインスタンスに示すように、ページに要素を追加します.Webコンポーネントを使用する各ページには、WebPartManagerコントロールが必要です.
    
    
    <asp:webpartmanager id="WebPartManager1" runat="server">
    
    </asp:webpartmanager>
    
    
  • 要素の下に、表示モードの変換のためのユーザーコントロールが宣言されます.コントロールに対する宣言は、次のコードインスタンスに示すように、使用するプログラミング言語によって異なります.
    
    
    <uc1:displaymodecs id="Displaymodecs1" runat="server" />
    
    
  • ユーザーコントロールの後に、ページ内のコントロールのレイアウトを構成するために、1行2列のテーブルを追加します.テーブルタグは、次のコードインスタンスのように見えます.
    
    
    <table style="width: 80%; position: relative">
    
      <tr valign="top">
    
        <td style="width: 40%">
    
        </td>
    
        <td style="width: 40%">
    
        </td>
    
      </tr>
    
    </table>
    
    
  • 各タグセットに要素を追加します.WebPartZoneBaseクラスから継承された領域は、WebPartコントロールを含み、すべてのWebコンポーネント機能を持つことを許可する場合に必要です.最初の領域のタグは、次のコードインスタンスのように見えます.
    
    
    <asp:webpartzone id="WebPartZone1" runat="server" 
    
      style="position: relative" >
    
      <parttitlestyle font-size="14" font-names="Verdana" />
    
      <zonetemplate>
    
      </zonetemplate>
    
    </asp:webpartzone>
    
    
    の2番目の領域のマークは、このように見えるはずです.
    
    
    <asp:webpartzone id="WebPartZone2" runat="server" 
    
      style="position: relative" >
    
      <zonetemplate>
    
      </zonetemplate>
    
    </asp:webpartzone>
    
    
  • は、以下のコードインスタンスに示すように、最初の領域のタグ間でカスタムWebPartデータバインドコントロールを宣言する.タグには、Registerコマンドでコントロールに定義されたタグ接頭辞と、カスタムコントロールのクラス名が使用されていることに注意してください.コントロールのカスタム属性に定義ConnectionStringは、Webとして割り当てられるパラメータとして現れることにも注目する.configファイルのデータベース接続列.この方法では、ページ開発者がコントロールで使用する接続列を決定できます.マークはこのように見えるはずです.
    
    
    <aspSample:SmallGridWebPart id="grid1" runat="server" 
    
      title="Customer Phone List" width="300" 
    
      connectionstring="<%$ ConnectionStrings:nwind %>"   />
    
    
  • は、比較のために、2番目の領域のタグ間で通常のカレンダ・サーバ・コントロールを宣言する.WebPartZoneコントロールにコントロールを配置するため、通常のWebPartコントロールのように動作します.Web部品アプリケーションでのサーバコントロールの使用の詳細については、「Web部品アプリケーションでのASPの使用」を参照してください.NETサーバコントロール].タグは以下のコードのように見えるはずです.
    
    
    <asp:calendar id="Calendar1" runat="server" 
    
      style="position: relative"></asp:calendar>
    
    
  • ページを保存して閉じます.ページを実行し、カスタムWebPartコントロールをテストする準備ができます.ページ内の完全なコードは、次のコードインスタンスのように見えます.
    
    
    <%@ Page Language="C#" %>
    
    <!--                。 -->
    
    <%@ register src="displaymodecs.ascx" tagname="displaymodecs" 
    
        tagprefix="uc1" %>
    
    <!--         WebPart        。         assembly   ,               。           App_Code     。 -->
    
    <%@ register tagprefix="aspSample" 
    
        namespace="Samples.AspNet.CS.Controls" %>
    
    
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    
    
    <html xmlns="http://www.w3.org/1999/xhtml" >
    
    <head runat="server">
    
        <title>Untitled Page</title>
    
    </head>
    
    <body>
    
        <form id="form1" runat="server">
    
        <div>
    
          <asp:webpartmanager id="WebPartManager1" runat="server">
    
          </asp:webpartmanager>
    
          <uc1:displaymodecs id="Displaymodecs1" runat="server" />
    
          <br />
    
          <table style="width: 80%; position: relative">
    
            <tr valign="top">
    
              <td style="width: 40%">
    
                <asp:webpartzone id="WebPartZone1" runat="server" 
    
                  style="position: relative" >
    
                  <parttitlestyle font-size="14" font-names="Verdana, Arial" />
    
                  <zonetemplate>
    
                    <aspSample:SmallGridWebPart id="grid1" runat="server" 
    
                      title="Customer Phone List" width="300" 
    
                      connectionstring="<%$ ConnectionStrings:nwind %>"  
    
                      />
    
                  </zonetemplate>
    
                </asp:webpartzone>
    
              </td>
    
              <td style="width: 40%">
    
                <asp:webpartzone id="WebPartZone2" runat="server" 
    
                  style="position: relative">
    
                  <zonetemplate>
    
                    <asp:calendar id="Calendar1" runat="server" 
    
                      style="position: relative"></asp:calendar>
    
                  </zonetemplate>
    
                </asp:webpartzone>
    
              </td>
    
            </tr>
    
          </table>
    
        </div>
    
        </form>
    
    </body>
    
    </html>