ASP.NET 2.0バインドの高度なテクニック
9539 ワード
1.単純データバインド
2.データソースコントロール
2.1 SqlDataSourceキー属性
2.2 SqlDataSourceは以下の属性によるデータキャッシュをサポートする
2.3パラメトリックコマンドXxxParameterタイプ指定パラメータソース
2.4 XxxParameterタイプ
2.5 ControlParameterの使用例
2.7ストレージプロセスの調査例
3.XmlDataSourceはXMLをデータソースとして使用してキャッシュとXSL変換をサポートし、クエリーバインドのみをサポートし、更新はサポートしない
3.1 XmlDataSourceの重要な属性
4. ObjectDataSourceはデータコンポーネントからデータをバインドし、ミドルウェアのデータバインドを提供し、データアクセスとUIを離脱させる.2種類のデータバインド方式SelectMethod、InsertMethod、UpdateMethod、and DeleteMethodはキャッシュを使用するかどうかを選択し、パラメータ4.1 ODSキー属性を使用するかどうかを選択することができる
5.強化されたDataGridコントロールは、CheckBoxFieldsが要素で高カスタマイズ可能なユーザーインタフェースgridView列タイプを宣言するなど、複雑なデータ・セル・タイプをサポートします.
6. コンフリクト判定
6.1先入勝利法則の更新
7.エラー検出データの更新後にコントロールが呼び出すイベントGridView.RowUpdated,DetailsView.ItemUpdated,SqlDataSource.Updated,etc.「status」のイベントを処理します.データベースが異常であるかどうかにかかわらず、データベースの異常が処理されるか、または再破棄されるかにかかわらず、どのくらいのデータベース行が修正され、処理が更新されたかを表示します.
<!--ASP.NET 1.x data binding expression -->
<%# DataBinder.Eval(Container.DataItem, "Price") %>
<!--Equivalent ASP.NET 2.0 data binding expression -->
<%# Eval("Price") %>
<!--XML data binding -->
<%# XPath("Price") %>
2.データソースコントロール
SqlDataSource SQL
AccessDataSource Access
XmlDataSource XML
ObjectDataSource
SiteMapDataSource
2.1 SqlDataSourceキー属性
ConnectionString
SelectCommand
InsertCommand
UpdateCommand
DeleteCommand
DataSourceMode DataSet DataReader( = DataSet)
ProviderName ( = SQL Server .NET provider)
2.2 SqlDataSourceは以下の属性によるデータキャッシュをサポートする
EnableCaching ( = false)
CacheDuration
CacheExpirationPolicy sliding absolute
CacheKeyDependency
SqlCacheDependency
2.3パラメトリックコマンドXxxParameterタイプ指定パラメータソース
SelectParameters
InsertParameters
UpdateParameters
DeleteParameters
FilterParameters
2.4 XxxParameterタイプ
ControlParameter
CookieParameter cookie
FormParameter
ProfileParameter profile
QueryStringParameter
Parameter
SessionParameter session
2.5 ControlParameterの使用例
<asp:SqlDataSourceID="Countries" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="select distinct country from customers order by country" />
<asp:SqlDataSourceID="Customers" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="select * from customers where country =@Country">
<SelectParameters>
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownListID=" MyDropDownList" DataSourceID="Countries"
DataTextField="country" AutoPostBack="true" RunAt="server" />
<asp:DataGridDataSourceID="Customers" RunAt="server" />
2.7ストレージプロセスの調査例
<asp:SqlDataSourceID="Countries" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="proc_GetCountries" />
<asp:SqlDataSourceID="Customers" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="proc_GetCustomers">
<SelectParameters>
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
PropertyName="SelectedValue" />
</SelectParameters>
</asp:SqlDataSource>
<asp:DropDownListID="MyDropDownList" DataSourceID="Countries"
DataTextField="country" AutoPostBack="true" RunAt="server" />
<asp:DataGridDataSourceID="Customers" RunAt="server" />
CREATE PROCEDURE proc_GetCustomers
@Country nvarchar(32) AS
SELECT * FROM Customers
WHERE Country = @Country
GO
CREATE PROCEDURE proc_GetCustomers
CREATE PROCEDURE proc_GetCountriesAS
SELECT DISTINCT Country
FROM Customers
ORDER BY Country
GO
3.XmlDataSourceはXMLをデータソースとして使用してキャッシュとXSL変換をサポートし、クエリーバインドのみをサポートし、更新はサポートしない
<asp:XmlDataSourceID="Rates" DataFile="Rates.xml" RunAt="server" />
<asp:TreeViewID="MyTreeView" DataSourceID="Rates" RunAt="server" />
3.1 XmlDataSourceの重要な属性
DataFile XML
TransformFile XSL
EnableCaching cache ( = false)
XPath XPath
CacheDuration
CacheExpirationPolicy sliding absolute
CacheKeyDependency
4. ObjectDataSourceはデータコンポーネントからデータをバインドし、ミドルウェアのデータバインドを提供し、データアクセスとUIを離脱させる.2種類のデータバインド方式SelectMethod、InsertMethod、UpdateMethod、and DeleteMethodはキャッシュを使用するかどうかを選択し、パラメータ4.1 ODSキー属性を使用するかどうかを選択することができる
ODS
InsertParameters
UpdateParameters
DeleteParameters
SelectParameters
CacheDuration
SqlCacheDependency
ObjectDataSource.SelectMethod
:ODS
ObjectCreated ObjectDisposing
5.強化されたDataGridコントロールは、CheckBoxFieldsが
BoundField
ButtonField
CheckBoxField check boxes boolean
HyperLinkField
TemplateField HTML
CommandField
ImageField
6. コンフリクト判定
,
UpdateCommand ConflictDetection=“CompareAllValues”
,
UpdateCommand ConflictDetection=“OverwriteChanges”
6.1先入勝利法則の更新
<asp:SqlDataSourceID="Employees" RunAt="server"
ConnectionString="server=localhost;database=northwind;"
SelectCommand="select employeeid, lastname, firstnamefrom employees"
UpdateCommand="update employees set lastname=@lastname, firstname=
@firstnamewhere employeeid=@original_employeeid and lastname=
@original_lastnameand firstname=@original_firstname"
ConflictDetection="CompareAllValues">
<UpdateParameters>
<asp:ParameterName="EmployeeID" Type="Int32" />
<asp:ParameterName="lastname" Type="String" />
<asp:ParameterName="firstname" Type="String" />
</UpdateParameters>
</asp:SqlDataSource>
<asp:GridViewDataSourceID="Employees" Width="100%" RunAt="server"
DataKeyNames="EmployeeID" AutoGenerateEditButton="true" />
7.エラー検出データの更新後にコントロールが呼び出すイベントGridView.RowUpdated,DetailsView.ItemUpdated,SqlDataSource.Updated,etc.「status」のイベントを処理します.データベースが異常であるかどうかにかかわらず、データベースの異常が処理されるか、または再破棄されるかにかかわらず、どのくらいのデータベース行が修正され、処理が更新されたかを表示します.
<asp:SqlDataSourceID="Employees" RunAt="server"
UpdateCommand="" OnUpdated="OnUpdateComplete">
</asp:SqlDataSource>
void OnUpdateComplete (Object source, SqlDataSourceStatusEventsArgse)
{
if (e.Exception!= null) {
// Exception thrown. Set e.ExceptionHandledto true to prevent
// the SqlDataSourcefrom throwing an exception, or leave it set
// to false to allow SqlDataSourceto rethrowthe exception
}
else if (e.AffectedRows== 0) {
// No exception was thrown, but no records were updated,either.
// Might want to let the user know that the update failed
}
}