DetailsView クラス
アセンブリ: System.Web (system.web.dll 内)
構文
<ControlValuePropertyAttribute("SelectedValue")> _ Public Class DetailsView Inherits CompositeDataBoundControl Implements IDataItemContainer, INamingContainer, ICallbackContainer, ICallbackEventHandler, _ IPostBackEventHandler, IPostBackContainer
[ControlValuePropertyAttribute("SelectedValue")] public class DetailsView : CompositeDataBoundControl, IDataItemContainer, INamingContainer, ICallbackContainer, ICallbackEventHandler, IPostBackEventHandler, IPostBackContainer
[ControlValuePropertyAttribute(L"SelectedValue")] public ref class DetailsView : public CompositeDataBoundControl, IDataItemContainer, INamingContainer, ICallbackContainer, ICallbackEventHandler, IPostBackEventHandler, IPostBackContainer
DetailsView コントロールは、レコードの各フィールドがテーブル行に表示されるテーブル内のデータ ソースから単一レコードを表示するために使用します。マスター詳細の場合は、このコントロールと GridView コントロールを組み合わせて使用できます。DetailsView コントロールは、次の機能をサポートしています。
-
SqlDataSource などのデータ ソース コントロールへのバインド。
-
プロパティを動的に設定したり、イベントを処理したりするための、DetailsView オブジェクト モデルへのプログラムによるアクセス。
DetailsView コントロールの各データ行は、フィールド コントロールを宣言して作成されます。行フィールドの種類によって、コントロール内の行の機能は異なります。フィールドは DataControlField からの派生を制御します。使用できる行フィールドのさまざまな種類の一覧を次の表に示します。
BoundField | |
ButtonField | DetailsView コントロールにコマンド ボタンを表示します。これにより、Add ボタンや Remove ボタンなどのカスタム ボタン コントロールを行に表示できます。 |
CheckBoxField | DetailsView コントロールにチェック ボックスを表示します。通常、この種類の行フィールドは、フィールドにブール値を表示する場合に使用されます。 |
CommandField | 編集、挿入、または削除の操作を実行するための組み込みのコマンド ボタンを DetailsView コントロールに表示します。 |
HyperLinkField | データ ソース内のフィールドの値をハイパーリンクとして表示します。この種類の行フィールドを使用すると、2 番目のフィールドをハイパーリンクの URL にバインドできます。 |
ImageField | |
TemplateField | 指定されたテンプレートに従って、ユーザー定義の行の内容を DetailsView コントロールに表示します。この種類の行フィールドを使用すると、カスタム行フィールドを作成できます。 |
既定では AutoGenerateRows プロパティは true に設定されています。つまり、データ ソース内のバインドできる型の各フィールドに対して、バインドされる行フィールド オブジェクトが自動的に作成されます。バインドできる有効な型は String、DateTime、Decimal, Guid、およびプリミティブ型のセットです。続いて各フィールドが、データ ソースに表示される順序で行にテキストとして表示されます。
行を自動的に生成することで、レコード内の各フィールドをすばやく簡単に表示できます。ただし、DetailsView コントロールの拡張機能を利用するためには、行フィールドを明示的に宣言して DetailsView コントロールに含める必要があります。行フィールドを宣言するには、最初に AutoGenerateRows プロパティを false に設定します。次に、DetailsView コントロールの開始タグと終了タグの間に <Fields> の開始タグと終了タグを追加します。最後に、<Fields> の開始タグと終了タグの間に組み込む行フィールドをリストします。指定した行フィールドが、リストした順序で Fields コレクションに追加されます。Fields コレクションを使用すると、DetailsView コントロール内の行フィールドをプログラムによって管理できます。
データへのバインド
DetailsView コントロールは、データ ソース コントロール (SqlDataSource や AccessDataSource など)、または System.Collections.IEnumerable インターフェイスを実装するデータ ソース (System.Data.DataView、System.Collections.ArrayList、System.Collections.Hashtable など) にバインドできます。DetailsView コントロールを適切なデータ ソースの種類にバインドするには、次のいずれかの方法を使用します。
-
データ ソース コントロールにバインドするには、DetailsView コントロールの DataSourceID プロパティをデータ ソース コントロールの ID 値に設定します。DetailsView コントロールは、指定されたデータ ソース コントロールに自動的にバインドされます。データにバインドするには、この方法をお勧めします。
-
System.Collections.IEnumerable インターフェイスを実装するデータ ソースにバインドするには、プログラムによって DetailsView コントロールの DataSource プロパティをデータ ソースに設定してから、DataBind メソッドを呼び出します。
データ バインディングの詳細については、「データベースへのバインド」を参照してください。
このコントロールは、ユーザー入力を表示するために使用できます。ユーザー入力には悪意のあるクライアント スクリプトが含まれている可能性があります。アプリケーションに表示する前に、クライアントから送信された実行スクリプト、SQL ステートメントなどのコードの情報はすべて検査してください。ASP.NET には入力要求の検証機能があり、ユーザー入力の中のスクリプトと HTML をブロックできます。詳細については、「スクリプトによる攻略の概要」を参照してください。検証サーバー コントロールは、ユーザー入力を査定する目的でも用意されています。詳細については、「検証サーバー コントロール構文」を参照してください。
DetailsView コントロールには、ユーザーがそのコントロール内の項目を使用して更新、削除、挿入、ページングを実行できる組み込み機能が用意されています。DetailsView コントロールがデータ ソース コントロールにバインドされている場合、DetailsView コントロールは、データ ソース コントロールの機能を利用して、自動的な更新、削除、挿入、およびページングの各機能を提供します。
メモ |
---|
他の種類のデータ ソースでも、DetailsView コントロールは更新、削除、挿入、およびページングの各操作をサポートできますが、適切なイベント ハンドラを使用して、これらの操作の実装を行う必要があります。詳細については、「ItemDeleting」、「ItemInserting」、および「ItemUpdating」を参照してください。 |
DetailsView コントロールは、AutoGenerateEditButton、AutoGenerateDeleteButton、または AutoGenerateInsertButton の各プロパティをそれぞれ true に設定して、CommandField 行フィールドに Edit、Delete、または New の各ボタンを追加できます。(選択されているレコードをすぐに削除する) Delete ボタンとは異なり、Edit ボタンまたは New ボタンをクリックすると、DetailsView コントロールが編集モード (Edit ボタンの場合) または挿入モード (New ボタンの場合) になります。編集モードでは、Edit ボタンが Update ボタンと Cancel ボタンに置き換えられます。フィールドのデータ型に適した入力コントロール (TextBox コントロールや CheckBox コントロールなど) が、ユーザーが変更するフィールドの値を設定した状態で表示されます。Update ボタンをクリックすると、データ ソースのレコードが更新され、Cancel ボタンをクリックすると、すべての変更が放棄されます。同様に、挿入モードでは、New ボタンが Insert ボタンと Cancel ボタンに置き換えられ、新規レコードの値を入力するための空の入力コントロールがユーザーに表示されます。
メモ |
---|
更新、削除、および挿入のコマンド ボタンは、ButtonField、CommandField、または TemplateField の行フィールドで手動で定義することもできます。DetailsView コントロールは、CommandName プロパティが "Edit"、"Update"、"Delete"、"New"、"Insert"、または "Cancel" に設定されているボタンを認識しますが、機能は手動で指定する必要があります。詳細については、「ItemDeleting」、「ItemInserting」、および「ItemUpdating」を参照してください。 |
DetailsView コントロールには、ユーザーがデータ ソース内の他のレコードに移動できるページング機能が用意されています。この機能が有効に設定されている場合は、ページ ナビゲーション コントロールがページ行に表示されます。ページングを有効にするには、AllowPaging プロパティを true に設定します。ページ行は、PagerStyle プロパティと PagerSettings プロパティを使用してカスタマイズできます。
ユーザー インターフェイスのカスタマイズ
コントロールのさまざまな部分にスタイル プロパティを設定することによって、DetailsView コントロールの外観をカスタマイズできます。さまざまなスタイル プロパティの一覧を次の表に示します。
AlternatingRowStyle | DetailsView コントロールに交互に表示されるデータ行のスタイル設定。このプロパティが設定されている場合、データ行は RowStyle 設定と AlternatingRowStyle 設定で交互に表示されます。 |
CommandRowStyle | |
EditRowStyle | |
EmptyDataRowStyle | データ ソースにレコードが格納されていない場合に DetailsView コントロールに表示される、空のデータ行のスタイル設定。 |
FooterStyle | |
HeaderStyle | |
InsertRowStyle | |
PagerStyle | |
RowStyle | DetailsView コントロールのデータ行のスタイル設定。AlternatingRowStyle プロパティも設定されている場合、データ行は RowStyle 設定と AlternatingRowStyle 設定で交互に表示されます。 |
FieldHeaderStyle |
イベント
DetailsView コントロールには、プログラムに利用できる複数のイベントが用意されています。これにより、イベントが発生するたびにカスタム ルーチンが実行されるようにできます。DetailsView コントロールでサポートされるイベントの一覧を次の表に示します。DetailsView コントロールは、これらのイベントを基本クラスの DataBinding、DataBound、Disposed, Init、Load、PreRender、および Render からも継承します。
ユーザー補助
このコントロールに既定でレンダリングされるマークアップは、Web Content Accessibility Guidelines (WCAG) 1.0 の優先度 1 ガイドラインなどのユーザー補助に関する標準に適合しない可能性があります。このコントロールのユーザー補助サポートの詳細については、「ASP.NET コントロールとユーザー補助」を参照してください。
単純なマスター詳細の場合に DetailsView コントロールと GridView コントロールを組み合わせて使用する方法のコード例を次に示します。この例では、GridView コントロールの選択された項目の詳細を表示します。
<%@ Page Language="VB" %> <html> <body> <form runat="server"> <div> <table> <tr> <td> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="Customers" DataKeyNames="CustomerID"> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> </Columns> </asp:GridView> </td> <td valign="top"> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="True" DataKeyNames="CustomerID" DataSourceID="Details" Height="50px" Width="301px"> </asp:DetailsView> </td> </tr> </table> <asp:SqlDataSource ID="Details" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT * FROM [Customers] WHERE ([CustomerID] = @CustomerID)"> <SelectParameters> <asp:ControlParameter ControlID="GridView1" Name="CustomerID" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="Customers" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID] FROM [Customers]"> </asp:SqlDataSource> </div> </form> </body> </html>
<%@ Page Language="C#" %> <html> <body> <form runat="server"> <div> <table> <tr> <td> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="Customers" DataKeyNames="CustomerID"> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> </Columns> </asp:GridView> </td> <td valign="top"> <asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="True" DataKeyNames="CustomerID" DataSourceID="Details" Height="50px" Width="301px"> </asp:DetailsView> </td> </tr> </table> <asp:SqlDataSource ID="Details" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT * FROM [Customers] WHERE ([CustomerID] = @CustomerID)"> <SelectParameters> <asp:ControlParameter ControlID="GridView1" Name="CustomerID" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:SqlDataSource> <asp:SqlDataSource ID="Customers" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID] FROM [Customers]"> </asp:SqlDataSource> </div> </form> </body> </html>
DetailsView コントロールを使用してレコードを追加、削除、および編集する方法のコード例を次に示します。
<%@ Page Language="VB" %> <script runat="server"> Sub CustomerDetail_ItemInserted(ByVal sender As Object, _ ByVal e As DetailsViewInsertedEventArgs) ' Refresh the GridView control after a new record is inserted in ' the DetailsView control. CustomersView.DataBind() End Sub Sub CustomerDetail_ItemInserting(ByVal sender As Object, _ ByVal e As DetailsViewInsertEventArgs) ' Iterate though the values entered by the user and HTML encode ' the values. This helps prevent malicious values from being ' stored in the data source. For i As Integer = 0 To e.Values.Count - 1 If e.Values(i) IsNot Nothing Then e.Values(i) = Server.HtmlEncode(e.Values(i).ToString()) End If Next End Sub Sub CustomerDetail_ItemUpdated(ByVal sender As Object, _ ByVal e As DetailsViewUpdatedEventArgs) ' Refresh the GridView control after a new record is updated ' in the DetailsView control. CustomersView.DataBind() End Sub Sub CustomerDetail_ItemUpdating(ByVal sender As Object, _ ByVal e As DetailsViewUpdateEventArgs) ' Iterate though the values entered by the user and HTML encode ' the values. This helps prevent malicious values from being ' stored in the data source. For i As Integer = 0 To e.NewValues.Count - 1 If e.NewValues(i) IsNot Nothing Then e.NewValues(i) = Server.HtmlEncode(e.NewValues(i).ToString()) End If Next End Sub Sub CustomerDetail_ItemDeleted(ByVal sender As Object, _ ByVal e As DetailsViewDeletedEventArgs) ' Refresh the GridView control after a new record is updated ' in the DetailsView control. CustomersView.DataBind() End Sub </script> <html> <body> <form id="Form1" runat="server"> <h3>DetailsView Example</h3> <table cellspacing="10"> <tr> <td> <!-- Use a GridView control in combination with --> <!-- a DetailsView control to display master-detail --> <!-- information. When the user selects a store from --> <!-- GridView control, the customers's detailed --> <!-- information is displayed in the DetailsView --> <!-- control. --> <asp:GridView ID="CustomersView" DataSourceID="Customers" AutoGenerateColumns="False" DataKeyNames="CustomerID" runat="server"> <HeaderStyle BackColor="Blue" ForeColor="White" /> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> </Columns> </asp:GridView> </td> <td valign="top"> <asp:DetailsView ID="CustomerDetail" DataSourceID="Details" AutoGenerateRows="false" AutoGenerateInsertButton="true" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" EmptyDataText="No records." DataKeyNames="CustomerID" GridLines="Both" OnItemInserted="CustomerDetail_ItemInserted" OnItemInserting="CustomerDetail_ItemInserting" OnItemUpdated="CustomerDetail_ItemUpdated" OnItemUpdating="CustomerDetail_ItemUpdating" OnItemDeleted="CustomerDetail_ItemDeleted" runat="server"> <HeaderStyle BackColor="Navy" ForeColor="White" /> <RowStyle BackColor="White" /> <AlternatingRowStyle BackColor="LightGray" /> <EditRowStyle BackColor="LightCyan" /> <Fields> <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> <asp:BoundField DataField="Address" HeaderText="Address" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="Region" HeaderText="Region" /> <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" /> <asp:BoundField DataField="Country" HeaderText="Country" /> <asp:BoundField DataField="Phone" HeaderText="Phone" /> <asp:BoundField DataField="Fax" HeaderText="Fax" /> </Fields> </asp:DetailsView> </td> </tr> </table> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. --> <!-- It is strongly recommended that each data-bound --> <!-- control uses a separate data source control. --> <asp:SqlDataSource ID="Customers" runat="server" ConnectionString= "<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID] FROM [Customers]"> </asp:SqlDataSource> <!-- Add a filter to the data source control for the --> <!-- DetailsView control to display the details of the --> <!-- store selected in the GridView control. --> <asp:SqlDataSource ID="Details" ConnectionString= "<%$ ConnectionStrings:NorthwindConnectionString %>" runat="server" SelectCommand="SELECT * FROM [Customers] WHERE ([CustomerID] = @CustomerID)" DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] = @CustomerID" InsertCommand="INSERT INTO [Customers] ([CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax]) VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax)" UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName, [ContactName] = @ContactName, [ContactTitle] = @ContactTitle, [Address] = @Address, [City] = @City, [Region] = @Region, [PostalCode] = @PostalCode, [Country] = @Country, [Phone] = @Phone, [Fax] = @Fax WHERE [CustomerID] = @CustomerID"> <SelectParameters> <asp:ControlParameter ControlID="CustomersView" Name="CustomerID" PropertyName="SelectedValue" Type="String" /> </SelectParameters> <DeleteParameters> <asp:Parameter Name="CustomerID" Type="String" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="CompanyName" Type="String" /> <asp:Parameter Name="ContactName" Type="String" /> <asp:Parameter Name="ContactTitle" Type="String" /> <asp:Parameter Name="Address" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> <asp:Parameter Name="Country" Type="String" /> <asp:Parameter Name="Phone" Type="String" /> <asp:Parameter Name="Fax" Type="String" /> <asp:Parameter Name="CustomerID" Type="String" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="CustomerID" Type="String" /> <asp:Parameter Name="CompanyName" Type="String" /> <asp:Parameter Name="ContactName" Type="String" /> <asp:Parameter Name="ContactTitle" Type="String" /> <asp:Parameter Name="Address" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> <asp:Parameter Name="Country" Type="String" /> <asp:Parameter Name="Phone" Type="String" /> <asp:Parameter Name="Fax" Type="String" /> </InsertParameters> </asp:SqlDataSource> </form> </body> </html>
<%@ Page Language="C#" %> <script runat="server"> void CustomerDetail_ItemInserted(object sender, DetailsViewInsertedEventArgs e) { // Refresh the GridView control after a new record is inserted // in the DetailsView control. CustomersView.DataBind(); } void CustomerDetail_ItemInserting(object sender, DetailsViewInsertEventArgs e) { // Iterate though the values entered by the user and HTML encode // the values. This helps prevent malicious values from being // stored in the data source. for (int i = 0; i < e.Values.Count; i++) { if (e.Values[i] != null) { e.Values[i] = Server.HtmlEncode(e.Values[i].ToString()); } } } void CustomerDetail_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e) { // Refresh the GridView control after a new record is updated // in the DetailsView control. CustomersView.DataBind(); } void CustomerDetail_ItemUpdating(object sender, DetailsViewUpdateEventArgs e) { // Iterate though the values entered by the user and HTML encode // the values. This helps prevent malicious values from being // stored in the data source. for (int i = 0; i < e.NewValues.Count; i++) { if (e.NewValues[i] != null) { e.NewValues[i] = Server.HtmlEncode(e.NewValues[i].ToString()); } } } void CustomerDetail_ItemDeleted(object sender, DetailsViewDeletedEventArgs e) { // Refresh the GridView control after a new record is updated // in the DetailsView control. CustomersView.DataBind(); } </script> <html> <body> <form id="Form1" runat="server"> <h3> DetailsView Example</h3> <table cellspacing="10"> <tr> <td> <!-- Use a GridView control in combination with --> <!-- a DetailsView control to display master-detail --> <!-- information. When the user selects a store from --> <!-- GridView control, the customers//s detailed --> <!-- information is displayed in the DetailsView --> <!-- control. --> <asp:GridView ID="CustomersView" DataSourceID="Customers" AutoGenerateColumns="False" DataKeyNames="CustomerID" runat="server"> <HeaderStyle BackColor="Blue" ForeColor="White" /> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> </Columns> </asp:GridView> </td> <td valign="top"> <asp:DetailsView ID="CustomerDetail" DataSourceID="Details" AutoGenerateRows="false" AutoGenerateInsertButton="true" AutoGenerateEditButton="true" AutoGenerateDeleteButton="true" EmptyDataText="No records." DataKeyNames="CustomerID" GridLines="Both" OnItemInserted="CustomerDetail_ItemInserted" OnItemInserting="CustomerDetail_ItemInserting" OnItemUpdated="CustomerDetail_ItemUpdated" OnItemUpdating="CustomerDetail_ItemUpdating" OnItemDeleted="CustomerDetail_ItemDeleted" runat="server"> <HeaderStyle BackColor="Navy" ForeColor="White" /> <RowStyle BackColor="White" /> <AlternatingRowStyle BackColor="LightGray" /> <EditRowStyle BackColor="LightCyan" /> <Fields> <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> <asp:BoundField DataField="Address" HeaderText="Address" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="Region" HeaderText="Region" /> <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" /> <asp:BoundField DataField="Country" HeaderText="Country" /> <asp:BoundField DataField="Phone" HeaderText="Phone" /> <asp:BoundField DataField="Fax" HeaderText="Fax" /> </Fields> </asp:DetailsView> </td> </tr> </table> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. --> <!-- It is strongly recommended that each data-bound --> <!-- control uses a separate data source control. --> <asp:SqlDataSource ID="Customers" runat="server" ConnectionString= "<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID] FROM [Customers]"> </asp:SqlDataSource> <!-- Add a filter to the data source control for the --> <!-- DetailsView control to display the details of the --> <!-- store selected in the GridView control. --> <asp:SqlDataSource ID="Details" ConnectionString= "<%$ ConnectionStrings:NorthwindConnectionString %>" runat="server" SelectCommand="SELECT * FROM [Customers] WHERE ([CustomerID] = @CustomerID)" DeleteCommand="DELETE FROM [Customers] WHERE [CustomerID] = @CustomerID" InsertCommand="INSERT INTO [Customers] ([CustomerID], [CompanyName], [ContactName], [ContactTitle], [Address], [City], [Region], [PostalCode], [Country], [Phone], [Fax]) VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax)" UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName, [ContactName] = @ContactName, [ContactTitle] = @ContactTitle, [Address] = @Address, [City] = @City, [Region] = @Region, [PostalCode] = @PostalCode, [Country] = @Country, [Phone] = @Phone, [Fax] = @Fax WHERE [CustomerID] = @CustomerID"> <SelectParameters> <asp:ControlParameter ControlID="CustomersView" Name="CustomerID" PropertyName="SelectedValue" Type="String" /> </SelectParameters> <DeleteParameters> <asp:Parameter Name="CustomerID" Type="String" /> </DeleteParameters> <UpdateParameters> <asp:Parameter Name="CompanyName" Type="String" /> <asp:Parameter Name="ContactName" Type="String" /> <asp:Parameter Name="ContactTitle" Type="String" /> <asp:Parameter Name="Address" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> <asp:Parameter Name="Country" Type="String" /> <asp:Parameter Name="Phone" Type="String" /> <asp:Parameter Name="Fax" Type="String" /> <asp:Parameter Name="CustomerID" Type="String" /> </UpdateParameters> <InsertParameters> <asp:Parameter Name="CustomerID" Type="String" /> <asp:Parameter Name="CompanyName" Type="String" /> <asp:Parameter Name="ContactName" Type="String" /> <asp:Parameter Name="ContactTitle" Type="String" /> <asp:Parameter Name="Address" Type="String" /> <asp:Parameter Name="City" Type="String" /> <asp:Parameter Name="Region" Type="String" /> <asp:Parameter Name="PostalCode" Type="String" /> <asp:Parameter Name="Country" Type="String" /> <asp:Parameter Name="Phone" Type="String" /> <asp:Parameter Name="Fax" Type="String" /> </InsertParameters> </asp:SqlDataSource> </form> </body> </html>
宣言によって行フィールドを DetailsView コントロールに追加する方法のコード例を次に示します。
<%@ Page Language="VB" %> <html> <body> <form id="Form1" runat="server"> <table cellspacing="10"> <tr> <td> <!-- Use a GridView control in combination with --> <!-- a DetailsView control to display master-detail --> <!-- information. When the user selects a store from --> <!-- GridView control, the store's detailed --> <!-- information is displayed in the DetailsView --> <!-- control. --> <asp:GridView ID="GridView1" runat="server" DataSourceID="Customers" AutoGenerateColumns="False" DataKeyNames="CustomerID"> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> </Columns> </asp:GridView> </td> <td valign="top"> <asp:DetailsView ID="DetailsView" runat="server" DataSourceID="Details" AutoGenerateRows="false" DataKeyNames="CustomerID" > <HeaderStyle BackColor="Navy" ForeColor="White" /> <Fields> <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="Region" HeaderText="Region" /> <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" /> <asp:BoundField DataField="Country" HeaderText="Country" /> </Fields> </asp:DetailsView> </td> </tr> </table> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. --> <!-- It is strongly recommended that each data-bound --> <!-- control uses a separate data source control. --> <asp:SqlDataSource ID="Customers" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID] FROM [Customers]"> </asp:SqlDataSource> <!-- Add a filter to the data source control for the --> <!-- DetailsView control to display the details of the --> <!-- store selected in the GridView control. --> <asp:SqlDataSource ID="Details" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT * FROM [Customers] WHERE ([CustomerID] = @CustomerID)"> <SelectParameters> <asp:ControlParameter ControlID="GridView1" Name="CustomerID" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:SqlDataSource> </form> </body> </html>
<%@ Page Language="C#" %> <html> <body> <form id="Form1" runat="server"> <table cellspacing="10"> <tr> <td> <!-- Use a GridView control in combination with --> <!-- a DetailsView control to display master-detail --> <!-- information. When the user selects a store from --> <!-- GridView control, the store's detailed --> <!-- information is displayed in the DetailsView --> <!-- control. --> <asp:GridView ID="GridView1" runat="server" DataSourceID="Customers" AutoGenerateColumns="False" DataKeyNames="CustomerID"> <Columns> <asp:CommandField ShowSelectButton="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> </Columns> </asp:GridView> </td> <td valign="top"> <asp:DetailsView ID="DetailsView" runat="server" DataSourceID="Details" AutoGenerateRows="false" DataKeyNames="CustomerID" > <HeaderStyle BackColor="Navy" ForeColor="White" /> <Fields> <asp:BoundField DataField="CustomerID" HeaderText="CustomerID" ReadOnly="True" /> <asp:BoundField DataField="ContactName" HeaderText="ContactName" /> <asp:BoundField DataField="ContactTitle" HeaderText="ContactTitle" /> <asp:BoundField DataField="CompanyName" HeaderText="CompanyName" /> <asp:BoundField DataField="City" HeaderText="City" /> <asp:BoundField DataField="Region" HeaderText="Region" /> <asp:BoundField DataField="PostalCode" HeaderText="PostalCode" /> <asp:BoundField DataField="Country" HeaderText="Country" /> </Fields> </asp:DetailsView> </td> </tr> </table> <!-- This example uses Microsoft SQL Server and connects --> <!-- to the Northwind sample database. --> <!-- It is strongly recommended that each data-bound --> <!-- control uses a separate data source control. --> <asp:SqlDataSource ID="Customers" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT [CompanyName], [ContactName], [CustomerID] FROM [Customers]"> </asp:SqlDataSource> <!-- Add a filter to the data source control for the --> <!-- DetailsView control to display the details of the --> <!-- store selected in the GridView control. --> <asp:SqlDataSource ID="Details" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString %>" SelectCommand="SELECT * FROM [Customers] WHERE ([CustomerID] = @CustomerID)"> <SelectParameters> <asp:ControlParameter ControlID="GridView1" Name="CustomerID" PropertyName="SelectedValue" Type="String" /> </SelectParameters> </asp:SqlDataSource> </form> </body> </html>
System.Web.UI.Control
System.Web.UI.WebControls.WebControl
System.Web.UI.WebControls.BaseDataBoundControl
System.Web.UI.WebControls.DataBoundControl
System.Web.UI.WebControls.CompositeDataBoundControl
System.Web.UI.WebControls.DetailsView
プラットフォーム
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
DetailsView メンバ
System.Web.UI.WebControls 名前空間
IsPrimitive
AccessDataSource クラス
AllowPaging
AutoGenerateRows
AutoGenerateDeleteButton
AutoGenerateEditButton
AutoGenerateInsertButton
Fields
Rows
BoundField クラス
ButtonField クラス
CommandField クラス
CheckBoxField クラス
GridView
HyperLinkField
SqlDataSource
TemplateField
その他の技術情報
データ ソース コントロールとパラメータの使用
データ ソース コントロールの概要
ASP.NET データ アクセスの概要
- DetailsView クラスのページへのリンク