ASP.NET実践:Webコンポーネントのデータバインドコントロールインスタンスの確立と実行
11487 ワード
この文書には、WebPartデータバインディングコントロールを確立して実行するための説明が含まれており、「Webコンポーネントのデータバインディングコントロールインスタンス」に完全なコードインスタンスが記載されています.コードインスタンスでは、同じWebPartクラスから継承されているため、Webコンポーネントのアプリケーションに参加できるGridViewコントロールをデータソースにバインドするカスタムサーバコントロールを作成する方法を示します.この文書では、コードインスタンスをコンパイルし、そのコントロールをWebコンポーネントのコントロールとして実行するためにASPを構成するための情報を提供します.NET Webアプリケーション.
コードインスタンスを実行するには、ソースコードをコンパイルする必要があります.それを明確にコンパイルし、結果アセンブリをWebサイトのBinディレクトリまたはグローバルアセンブリキャッシュに保存できます.また、ソースコードをWebサイトのAppに保存することもできます.Codeディレクトリでは、実行時に動的にコンパイルできます.本明細書のコードインスタンスは、動的コンパイルを使用します.コンパイル方法のプレゼンテーションの実践については、「ASP.NET実践:カスタムサーバコントロールを開発して使用する].
動的コンパイルWebPartデータバインドコントロール Webアプリケーションのルートディレクトリで、App_を作成します.コードディレクトリ. このカスタムWebPartデータバインドコントロールのソースコードは、文書[Webコンポーネントのデータバインドコントロールの例]から得られる.ソースコードをAppに保存するコードディレクトリにあります.動的コンパイルを使用しているため、ファイルの名前は任意に指定できますが、ファイルには適切な拡張子が必要であり、使用するプログラミング言語(.csや.vbなど)に対応する必要があります.
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ファイルなので、このようにする必要があります. はWeb.configファイルのセクションで、要素を追加します.これは、Webコンポーネントアプリケーションでは必要ありませんが、Webコンポーネントのいくつかの特徴の使用は、このセクションで構成する必要があります.WebPartデータバインドコントロールインスタンスは、そのステータスと属性データを含むプロファイルをエクスポートできます.Webコンポーネントアプリケーションのエクスポートフィーチャーはデフォルトで無効になっているため、セクションで有効にする必要があります.要素にenabledExportパラメータを追加し、次のコードインスタンスに示すようにtrueの値を設定します. Webを保存して閉じる.configファイル.
WebページでWebコンポーネントコントロールを管理する準備は、利用可能なWebコンポーネント表示モード間でユーザが変換できるようにするユーザコントロールをWebページに作成する.このコントロールおよび次のステップでのWebコンポーネントのデータバインドコントロールの実行は必須ではありませんが、多くのWebコンポーネントページで実用的な特徴です.エディタで、以下のユーザーコントロールのコードを貼り付け、Webアプリケーションのルートディレクトリにファイルを保存し、DisplayModeMenuCSと名付けます.ascxまたはDisplayModeMenuVB.ascx(あなたが使用しているプログラミング言語によって異なります). 新しいASPを作成する.NETページでは、カスタムWebPartコントロールやその他のコントロールを管理します.ページのPageコマンドの下にRegisterコマンドを追加して、さっき作成したユーザーコントロールを登録します.命令の内容は、あなたが使用しているプログラミング言語によって異なり、以下の例と同じように見えます. カスタムWebPartコントロールにRegisterコマンドを追加しました.本明細書ではダイナミックコンパイルを使用しているので、Register命令にAssemblyパラメータを追加する必要はありません.Registerコマンドの下に、tagprefixパラメータに任意の文字列を割り当て、namespaceパラメータでカスタムコントロールのネーミングスペースを割り当てます.これは、次の例に示すように、使用するプログラミング言語に依存します. 要素の下に、表示モードの変換のためのユーザーコントロールが宣言されます.コントロールに対する宣言は、次のコードインスタンスに示すように、使用するプログラミング言語によって異なります. ユーザーコントロールの後に、ページ内のコントロールのレイアウトを構成するために、1行2列のテーブルを追加します.テーブルタグは、次のコードインスタンスのように見えます. 各タグセットに要素を追加します.WebPartZoneBaseクラスから継承された領域は、WebPartコントロールを含み、すべてのWebコンポーネント機能を持つことを許可する場合に必要です.最初の領域のタグは、次のコードインスタンスのように見えます. は、以下のコードインスタンスに示すように、最初の領域のタグ間でカスタムWebPartデータバインドコントロールを宣言する.タグには、Registerコマンドでコントロールに定義されたタグ接頭辞と、カスタムコントロールのクラス名が使用されていることに注意してください.コントロールのカスタム属性に定義ConnectionStringは、Webとして割り当てられるパラメータとして現れることにも注目する.configファイルのデータベース接続列.この方法では、ページ開発者がコントロールで使用する接続列を決定できます.マークはこのように見えるはずです. は、比較のために、2番目の領域のタグ間で通常のカレンダ・サーバ・コントロールを宣言する.WebPartZoneコントロールにコントロールを配置するため、通常のWebPartコントロールのように動作します.Web部品アプリケーションでのサーバコントロールの使用の詳細については、「Web部品アプリケーションでのASPの使用」を参照してください.NETサーバコントロール].タグは以下のコードのように見えるはずです. ページを保存して閉じます.ページを実行し、カスタムWebPartコントロールをテストする準備ができます.ページ内の完全なコードは、次のコードインスタンスのように見えます.
WebPartコントロールのコンパイル
コードインスタンスを実行するには、ソースコードをコンパイルする必要があります.それを明確にコンパイルし、結果アセンブリをWebサイトのBinディレクトリまたはグローバルアセンブリキャッシュに保存できます.また、ソースコードをWebサイトのAppに保存することもできます.Codeディレクトリでは、実行時に動的にコンパイルできます.本明細書のコードインスタンスは、動的コンパイルを使用します.コンパイル方法のプレゼンテーションの実践については、「ASP.NET実践:カスタムサーバコントロールを開発して使用する].
動的コンパイルWebPartデータバインドコントロール
Webコンポーネントアプリケーションでのコントロールの使用
Webコンポーネントを使用するアプリケーションを構成するには、個別のユーザーを識別できるASPが必要です.NET Webサイト、およびアプリケーション・サービス(パーソナライズを含む)の処理を可能にするデータベース.この例(データバインドコントロールが使用されているため)については、Webにも必要です.configファイルにデータベース接続列を作成し、データソースがNorthwindインスタンスデータベースに接続できるようにします.アプリケーションが構成されると、WebコンポーネントアプリケーションごとにWebPartとサーバコントロールを管理するWebページごとに、WebPartManagerコントロールと少なくとも1つのWebPartZoneコントロールを追加する必要があります.次の2つ目の手順では、これらのコントロールを追加し、実行時にページ内のデータバインドコントロールの他のステップを完了するために必要な準備を説明します.
ASPを構成する.NETアプリケーションによるWebコンポーネントコントロールの実行
<connectionStrings>
<add name="nwind"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=
"C:\SQL Server 2000 Sample Databases\NORTHWND.MDF";
Initial Catalog=Northwind;Integrated Security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
ヒント:パスワードなどのデータベース接続列のすべての機密情報を暗号化することをお勧めします.暗号化構成データの詳細については、「ASP.NET実践:保護された構成を使用して構成情報を暗号化する].
<webParts enableExport="true" />
WebページでWebコンポーネントコントロールを管理する準備
<!-- , 。 -->
<%@ 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>
<%@ register src="displaymodecs.ascx" tagname="displaymodecs"
tagprefix="uc1" %>
<%@ register tagprefix="aspSample"
namespace="Samples.AspNet.CS.Controls" %>
<uc1:displaymodecs id="Displaymodecs1" runat="server" />
<table style="width: 80%; position: relative">
<tr valign="top">
<td style="width: 40%">
</td>
<td style="width: 40%">
</td>
</tr>
</table>
<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>
<aspSample:SmallGridWebPart id="grid1" runat="server"
title="Customer Phone List" width="300"
connectionstring="<%$ ConnectionStrings:nwind %>" />
<asp:calendar id="Calendar1" runat="server"
style="position: relative"></asp:calendar>
<%@ 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>