ASP.NET 2.0 绑定高级技巧
2006-06-05 20:44
405 查看
1.简单数据绑定定
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--ASP.NET 1.x data binding expression -->
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
<%
![](http://www.cnblogs.com/Images/dot.gif)
# DataBinder.Eval(Container.DataItem, "Price") %>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--Equivalent ASP.NET 2.0 data binding expression -->
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
<%
![](http://www.cnblogs.com/Images/dot.gif)
# Eval("Price") %>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--XML data binding -->
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
<%
![](http://www.cnblogs.com/Images/dot.gif)
# XPath("Price") %>
2.数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
控件名 控件描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SqlDataSource 一切支持SQL语句的数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
AccessDataSource Access数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
XmlDataSource XML数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ObjectDataSource 自行编写组件的数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SiteMapDataSource 页面导航控件的数据源控件
2.1 SqlDataSource关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString 连接数据库的连接字符串
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand 用于执行查询的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
InsertCommand 用于执行插入的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand 用于执行更新的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DeleteCommand 用于执行删除的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataSourceMode 指定数据源类型是DataSet 或DataReader( 默认值= DataSet)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ProviderName 指定供应商(默认值= SQL Server .NET provider)
2.2 SqlDataSource 支持通过以下属性进行数据缓存
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
属性名 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
EnableCaching 指定是否打开缓存(默认值= false)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheDuration 指定结果被缓存多少妙
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheExpirationPolicy 指定缓存间隔是sliding 还是absolute
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheKeyDependency 使缓存依赖于一个特定键值
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SqlCacheDependency 使缓存依赖于一个特定数据库实体
2.3 参数化命令 XxxParameter 类型指定参数来源
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectParameters 为查询命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
InsertParameters 为插入命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateParameters 为更新命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DeleteParameters 为删除命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
FilterParameters 为过滤器命令指定参数
2.4 XxxParameter 类型
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ControlParameter 指定一个源自于控件的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CookieParameter 指定一个源自于cookie的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
FormParameter 指定一个源自于表单的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ProfileParameter 指定一个源自于profile的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
QueryStringParameter 制定于一个来源于查询字符串的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
Parameter 为数据源绑定一个参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SessionParameter 指定一个源自于session的参数
2.5 使用ControlParameter例子
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Countries" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="select distinct country from customers order by country" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Customers" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="select * from customers where country =@Country">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
PropertyName="SelectedValue" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DropDownListID=" MyDropDownList" DataSourceID="Countries"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataTextField="country" AutoPostBack="true" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DataGridDataSourceID="Customers" RunAt="server" />
2.7 调研存储过程例子
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Countries" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="proc_GetCountries" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Customers" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="proc_GetCustomers">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
PropertyName="SelectedValue" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DropDownListID="MyDropDownList" DataSourceID="Countries"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataTextField="country" AutoPostBack="true" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DataGridDataSourceID="Customers" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CREATE PROCEDURE proc_GetCustomers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
@Country nvarchar(32) AS
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT * FROM Customers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE Country = @Country
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
GO
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CREATE PROCEDURE proc_GetCustomers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CREATE PROCEDURE proc_GetCountriesAS
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT DISTINCT Country
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM Customers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER BY Country
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
GO
3.XmlDataSource 使用XML 作为数据源
支持缓存与X
ecc1
SL 转换,只支持查询绑定,不支持更新
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:XmlDataSourceID="Rates" DataFile="Rates.xml" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:TreeViewID="MyTreeView" DataSourceID="Rates" RunAt="server" />
3.1 XmlDataSource的关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataFile XML 数据文件的路径
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
TransformFile 含有XSL 风格定义的数据文件路径
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
EnableCaching 指定是否开启cache (默认值= false)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
XPath XPath 表达式用来确认数据
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheDuration 以秒为单位的时间间隔
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheExpirationPolicy 指定时间间隔是sliding 还是absolute
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheKeyDependency 创建缓存依存于某个键
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
4. ObjectDataSource
从数据组件绑定数据,提供中间件的数据绑定,使数据访问和UI脱离,两种数据绑定方式
SelectMethod, InsertMethod, UpdateMethod,and DeleteMethod
可选择是否使用缓存,可选择是否使用参数
4.1 ODS 关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ODS 关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
InsertParameters 指定插入方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateParameters 指定更新方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DeleteParameters 指定删除方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectParameters 指定查询方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheDuration 缓存间隔时间以秒为单位
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SqlCacheDependency 基于某个数据实体的缓存
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
创建和清除
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ObjectDataSource.SelectMethod 可以使用静态方法也可以使用一个类的新实例
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
如果使用实例方法:ODS 在每次调用的时候创建一个新实例类必须具有公共的建构函数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
使用ObjectCreated 和ObjectDisposing 元素可以初始化和撤销函数
5.增强的DataGrid 控件
支持复杂的数据单元格类型,包括CheckBoxFields在<Columns> 元素中声明高可定制的用户界面
gridView 列类型:
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
BoundField 显示数据库中取出的文本
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ButtonField 显示按钮
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CheckBoxField 使用check boxes显示一个boolean型变量
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
HyperLinkField 显示一个超链接
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
TemplateField 显示一个自定义的HTML模板
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CommandField 显示一个查询或者编辑按钮
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ImageField 显示一个图片
6. 冲突判定
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
先入胜利
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
如果数据在取出之后被改变,则修改失败
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand结构构成指定ConflictDetection=“CompareAllValues”来实现
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
后入胜利
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
无论数据是否被修改,该修改都会成功
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand结构构成指定ConflictDetection=“OverwriteChanges”来实现
6.1 先入胜利法则更新
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Employees" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="select employeeid, lastname, firstnamefrom employees"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand="update employees set lastname=@lastname, firstname=
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
@firstnamewhere employeeid=@original_employeeid and lastname=
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
@original_lastnameand firstname=@original_firstname"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConflictDetection="CompareAllValues">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<UpdateParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ParameterName="EmployeeID" Type="Int32" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ParameterName="lastname" Type="String" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ParameterName="firstname" Type="String" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</UpdateParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:GridViewDataSourceID="Employees" Width="100%" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataKeyNames="EmployeeID" AutoGenerateEditButton="true" />
7.错误检测
数据更新后控件调用的事件GridView.RowUpdated,DetailsView.ItemUpdated,SqlDataSource.Updated, etc.
处理“status”的事件,无论数据库是否异常允许数据库异常被处理或者再次抛弃,显示多少数据库行被修改
处理更新错误
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Employees" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand="" OnUpdated="OnUpdateComplete">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
void OnUpdateComplete (Object source, SqlDataSourceStatusEventsArgse)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
{
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
if (e.Exception!= null) {
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// Exception thrown. Set e.ExceptionHandledto true to prevent
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// the SqlDataSourcefrom throwing an exception, or leave it set
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// to false to allow SqlDataSourceto rethrowthe exception
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
}
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
else if (e.AffectedRows== 0) {
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// No exception was thrown, but no records were updated,either.
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// Might want to let the user know that the update failed
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
}
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
}
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--ASP.NET 1.x data binding expression -->
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
<%
![](http://www.cnblogs.com/Images/dot.gif)
# DataBinder.Eval(Container.DataItem, "Price") %>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--Equivalent ASP.NET 2.0 data binding expression -->
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
<%
![](http://www.cnblogs.com/Images/dot.gif)
# Eval("Price") %>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<!--XML data binding -->
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
<%
![](http://www.cnblogs.com/Images/dot.gif)
# XPath("Price") %>
2.数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
控件名 控件描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SqlDataSource 一切支持SQL语句的数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
AccessDataSource Access数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
XmlDataSource XML数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ObjectDataSource 自行编写组件的数据源控件
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SiteMapDataSource 页面导航控件的数据源控件
2.1 SqlDataSource关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString 连接数据库的连接字符串
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand 用于执行查询的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
InsertCommand 用于执行插入的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand 用于执行更新的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DeleteCommand 用于执行删除的命令
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataSourceMode 指定数据源类型是DataSet 或DataReader( 默认值= DataSet)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ProviderName 指定供应商(默认值= SQL Server .NET provider)
2.2 SqlDataSource 支持通过以下属性进行数据缓存
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
属性名 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
EnableCaching 指定是否打开缓存(默认值= false)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheDuration 指定结果被缓存多少妙
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheExpirationPolicy 指定缓存间隔是sliding 还是absolute
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheKeyDependency 使缓存依赖于一个特定键值
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SqlCacheDependency 使缓存依赖于一个特定数据库实体
2.3 参数化命令 XxxParameter 类型指定参数来源
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectParameters 为查询命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
InsertParameters 为插入命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateParameters 为更新命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DeleteParameters 为删除命令指定参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
FilterParameters 为过滤器命令指定参数
2.4 XxxParameter 类型
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ControlParameter 指定一个源自于控件的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CookieParameter 指定一个源自于cookie的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
FormParameter 指定一个源自于表单的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ProfileParameter 指定一个源自于profile的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
QueryStringParameter 制定于一个来源于查询字符串的参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
Parameter 为数据源绑定一个参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SessionParameter 指定一个源自于session的参数
2.5 使用ControlParameter例子
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Countries" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="select distinct country from customers order by country" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Customers" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="select * from customers where country =@Country">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
PropertyName="SelectedValue" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DropDownListID=" MyDropDownList" DataSourceID="Countries"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataTextField="country" AutoPostBack="true" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DataGridDataSourceID="Customers" RunAt="server" />
2.7 调研存储过程例子
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Countries" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="proc_GetCountries" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Customers" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="proc_GetCustomers">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
PropertyName="SelectedValue" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</SelectParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DropDownListID="MyDropDownList" DataSourceID="Countries"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataTextField="country" AutoPostBack="true" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:DataGridDataSourceID="Customers" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CREATE PROCEDURE proc_GetCustomers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
@Country nvarchar(32) AS
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT * FROM Customers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
WHERE Country = @Country
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
GO
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CREATE PROCEDURE proc_GetCustomers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CREATE PROCEDURE proc_GetCountriesAS
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SELECT DISTINCT Country
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
FROM Customers
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ORDER BY Country
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
GO
3.XmlDataSource 使用XML 作为数据源
支持缓存与X
ecc1
SL 转换,只支持查询绑定,不支持更新
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:XmlDataSourceID="Rates" DataFile="Rates.xml" RunAt="server" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:TreeViewID="MyTreeView" DataSourceID="Rates" RunAt="server" />
3.1 XmlDataSource的关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataFile XML 数据文件的路径
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
TransformFile 含有XSL 风格定义的数据文件路径
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
EnableCaching 指定是否开启cache (默认值= false)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
XPath XPath 表达式用来确认数据
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheDuration 以秒为单位的时间间隔
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheExpirationPolicy 指定时间间隔是sliding 还是absolute
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheKeyDependency 创建缓存依存于某个键
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
4. ObjectDataSource
从数据组件绑定数据,提供中间件的数据绑定,使数据访问和UI脱离,两种数据绑定方式
SelectMethod, InsertMethod, UpdateMethod,and DeleteMethod
可选择是否使用缓存,可选择是否使用参数
4.1 ODS 关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ODS 关键属性
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
InsertParameters 指定插入方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateParameters 指定更新方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DeleteParameters 指定删除方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectParameters 指定查询方法参数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CacheDuration 缓存间隔时间以秒为单位
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SqlCacheDependency 基于某个数据实体的缓存
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
创建和清除
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ObjectDataSource.SelectMethod 可以使用静态方法也可以使用一个类的新实例
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
如果使用实例方法:ODS 在每次调用的时候创建一个新实例类必须具有公共的建构函数
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
使用ObjectCreated 和ObjectDisposing 元素可以初始化和撤销函数
5.增强的DataGrid 控件
支持复杂的数据单元格类型,包括CheckBoxFields在<Columns> 元素中声明高可定制的用户界面
gridView 列类型:
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
名称 描述
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
BoundField 显示数据库中取出的文本
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ButtonField 显示按钮
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CheckBoxField 使用check boxes显示一个boolean型变量
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
HyperLinkField 显示一个超链接
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
TemplateField 显示一个自定义的HTML模板
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
CommandField 显示一个查询或者编辑按钮
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ImageField 显示一个图片
6. 冲突判定
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
先入胜利
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
如果数据在取出之后被改变,则修改失败
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand结构构成指定ConflictDetection=“CompareAllValues”来实现
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
后入胜利
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
无论数据是否被修改,该修改都会成功
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand结构构成指定ConflictDetection=“OverwriteChanges”来实现
6.1 先入胜利法则更新
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Employees" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConnectionString="server=localhost;database=northwind;"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
SelectCommand="select employeeid, lastname, firstnamefrom employees"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand="update employees set lastname=@lastname, firstname=
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
@firstnamewhere employeeid=@original_employeeid and lastname=
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
@original_lastnameand firstname=@original_firstname"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
ConflictDetection="CompareAllValues">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<UpdateParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ParameterName="EmployeeID" Type="Int32" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ParameterName="lastname" Type="String" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:ParameterName="firstname" Type="String" />
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</UpdateParameters>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:GridViewDataSourceID="Employees" Width="100%" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
DataKeyNames="EmployeeID" AutoGenerateEditButton="true" />
7.错误检测
数据更新后控件调用的事件GridView.RowUpdated,DetailsView.ItemUpdated,SqlDataSource.Updated, etc.
处理“status”的事件,无论数据库是否异常允许数据库异常被处理或者再次抛弃,显示多少数据库行被修改
处理更新错误
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
<asp:SqlDataSourceID="Employees" RunAt="server"
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
UpdateCommand="" OnUpdated="OnUpdateComplete">
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
</asp:SqlDataSource>
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
void OnUpdateComplete (Object source, SqlDataSourceStatusEventsArgse)
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
{
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
if (e.Exception!= null) {
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// Exception thrown. Set e.ExceptionHandledto true to prevent
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// the SqlDataSourcefrom throwing an exception, or leave it set
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// to false to allow SqlDataSourceto rethrowthe exception
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
}
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
else if (e.AffectedRows== 0) {
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// No exception was thrown, but no records were updated,either.
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
// Might want to let the user know that the update failed
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
}
![](http://ghd258.cnblogs.com/Images/OutliningIndicators/None.gif)
}
相关文章推荐
- ASP.NET 2.0 绑定高级技巧 (转)
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 数据绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧(zz)
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧
- ASP.NET 2.0 绑定高级技巧(转载)