ASP.NET 2.0 绑定高级技巧

  1. 云栖社区>
  2. 博客>
  3. 正文

ASP.NET 2.0 绑定高级技巧

老朱教授 2017-11-26 14:19:00 浏览994
展开阅读全文

1.简单数据绑定定

None.gif<!--ASP.NET 1.x data binding expression -->
ExpandedBlockStart.gif
<%# DataBinder.Eval(Container.DataItem, "Price"%>
None.gif
<!--Equivalent ASP.NET 2.0 data binding expression -->
ExpandedBlockStart.gif
<%Eval("Price"%>
None.gif
<!--XML data binding -->
ExpandedBlockStart.gif
<%# XPath("Price"%>
2.数据源控件
None.gif控件名                                     控件描述
None.gifSqlDataSource                       一切支持SQL语句的数据源控件
None.gifAccessDataSource               Access数据源控件
None.gifXmlDataSource                     XML数据源控件
None.gifObjectDataSource                自行编写组件的数据源控件
None.gifSiteMapDataSource             页面导航控件的数据源控件
 2.1 SqlDataSource关键属性
None.gif名称                                               描述
None.gifConnectionString                        连接数据库的连接字符串
None.gifSelectCommand                           用于执行查询的命令
None.gifInsertCommand                           用于执行插入的命令
None.gifUpdateCommand                        用于执行更新的命令
None.gifDeleteCommand                          用于执行删除的命令
None.gifDataSourceMode                        指定数据源类型是DataSet 或DataReader( 默认值
= DataSet)
None.gifProviderName                              指定供应商(默认值
= SQL Server .NET provider)
 2.2 SqlDataSource 支持通过以下属性进行数据缓存
None.gif属性名                                         描述
None.gifEnableCaching                           指定是否打开缓存(默认值
= false)
None.gifCacheDuration                           指定结果被缓存多少妙
None.gifCacheExpirationPolicy              指定缓存间隔是sliding 还是absolute
None.gifCacheKeyDependency             使缓存依赖于一个特定键值
None.gifSqlCacheDependency               使缓存依赖于一个特定数据库实体
2.3 参数化命令  XxxParameter 类型指定参数来源
None.gif名称                                      描述
None.gifSelectParameters                为查询命令指定参数
None.gifInsertParameters                为插入命令指定参数
None.gifUpdateParameters              为更新命令指定参数
None.gifDeleteParameters               为删除命令指定参数
None.gifFilterParameters                 为过滤器命令指定参数
2.4 XxxParameter 类型
None.gif名称                                               描述
None.gifControlParameter                         指定一个源自于控件的参数
None.gifCookieParameter                          指定一个源自于cookie的参数
None.gifFormParameter                             指定一个源自于表单的参数
None.gifProfileParameter                           指定一个源自于profile的参数
None.gifQueryStringParameter                 制定于一个来源于查询字符串的参数
None.gifParameter                                      为数据源绑定一个参数
None.gifSessionParameter                        指定一个源自于session的参数
2.5 使用ControlParameter例子
None.gif<asp:SqlDataSourceID="Countries" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="select distinct country from customers order by country" />
None.gif
<asp:SqlDataSourceID="Customers" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="select * from customers where country =@Country">
None.gif
<SelectParameters>
None.gif
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
None.gifPropertyName
="SelectedValue" />
None.gif
</SelectParameters>
None.gif
</asp:SqlDataSource>
None.gif
<asp:DropDownListID=" MyDropDownList" DataSourceID="Countries"
None.gifDataTextField
="country" AutoPostBack="true" RunAt="server" />
None.gif
<asp:DataGridDataSourceID="Customers" RunAt="server" />
2.7 调研存储过程例子
None.gif<asp:SqlDataSourceID="Countries" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="proc_GetCountries" />
None.gif
<asp:SqlDataSourceID="Customers" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="proc_GetCustomers">
None.gif
<SelectParameters>
None.gif
<asp:ControlParameterName="Country" ControlID="MyDropDownList"
None.gifPropertyName
="SelectedValue" />
None.gif
</SelectParameters>
None.gif
</asp:SqlDataSource>
None.gif
<asp:DropDownListID="MyDropDownList" DataSourceID="Countries"
None.gifDataTextField
="country" AutoPostBack="true" RunAt="server" />
None.gif
<asp:DataGridDataSourceID="Customers" RunAt="server" />
None.gifCREATE PROCEDURE proc_GetCustomers
None.gif@Country nvarchar(32) AS
None.gifSELECT * FROM Customers
None.gifWHERE Country = @Country
None.gifGO
None.gifCREATE PROCEDURE proc_GetCustomers
None.gifCREATE PROCEDURE proc_GetCountriesAS
None.gifSELECT DISTINCT Country
None.gifFROM Customers
None.gifORDER BY Country
None.gifGO
3.XmlDataSource 使用XML 作为数据源
支持缓存与XSL 转换,只支持查询绑定,不支持更新
None.gif<asp:XmlDataSourceID="Rates" DataFile="Rates.xml" RunAt="server" />
None.gif
<asp:TreeViewID="MyTreeView" DataSourceID="Rates" RunAt="server" />
3.1 XmlDataSource的关键属性
None.gif名称                                                    描述
None.gifDataFile XML                                    数据文件的路径
None.gifTransformFile                                    含有XSL 风格定义的数据文件路径
None.gifEnableCaching                                  指定是否开启cache (默认值= false)
None.gifXPath XPath                                      表达式用来确认数据
None.gifCacheDuration                                  以秒为单位的时间间隔
None.gifCacheExpirationPolicy                     指定时间间隔是sliding 还是absolute
None.gifCacheKeyDependency                    创建缓存依存于某个键
None.gif
4. ObjectDataSource
从数据组件绑定数据,提供中间件的数据绑定,使数据访问和UI脱离,两种数据绑定方式
SelectMethod, InsertMethod, UpdateMethod,and DeleteMethod
可选择是否使用缓存,可选择是否使用参数
4.1 ODS 关键属性
None.gifODS 关键属性
None.gif名称                                                         描述
None.gifInsertParameters                                    指定插入方法参数
None.gifUpdateParameters                                 指定更新方法参数
None.gifDeleteParameters                                   指定删除方法参数
None.gifSelectParameters                                    指定查询方法参数
None.gifCacheDuration                                       缓存间隔时间以秒为单位
None.gifSqlCacheDependency                          基于某个数据实体的缓存
None.gif创建和清除
None.gifObjectDataSource.SelectMethod 可以使用静态方法也可以使用一个类的新实例
None.gif如果使用实例方法:ODS 在每次调用的时候创建一个新实例类必须具有公共的建构函数
None.gif使用ObjectCreated 和ObjectDisposing 元素可以初始化和撤销函数
5.增强的DataGrid 控件
支持复杂的数据单元格类型,包括CheckBoxFields在<Columns> 元素中声明高可定制的用户界面
gridView 列类型:
None.gif名称                                             描述
None.gifBoundField                                 显示数据库中取出的文本
None.gifButtonField                                显示按钮
None.gifCheckBoxField                           使用check boxes显示一个boolean型变量
None.gifHyperLinkField                          显示一个超链接
None.gifTemplateField                            显示一个自定义的HTML模板
None.gifCommandField                          显示一个查询或者编辑按钮
None.gifImageField                                 显示一个图片
6. 冲突判定
None.gif先入胜利
None.gif如果数据在取出之后被改变,则修改失败
None.gifUpdateCommand结构构成指定ConflictDetection
=“CompareAllValues”来实现
None.gif后入胜利
None.gif无论数据是否被修改,该修改都会成功
None.gifUpdateCommand结构构成指定ConflictDetection
=“OverwriteChanges”来实现
6.1 先入胜利法则更新
None.gif<asp:SqlDataSourceID="Employees" RunAt="server"
None.gifConnectionString
="server=localhost;database=northwind;"
None.gifSelectCommand
="select employeeid, lastname, firstnamefrom employees"
None.gifUpdateCommand
="update employees set lastname=@lastname, firstname=
None.gif@firstnamewhere employeeid=@original_employeeid and lastname=
None.gif@original_lastnameand firstname=@original_firstname"

None.gifConflictDetection
="CompareAllValues">
None.gif
<UpdateParameters>
None.gif
<asp:ParameterName="EmployeeID" Type="Int32" />
None.gif
<asp:ParameterName="lastname" Type="String" />
None.gif
<asp:ParameterName="firstname" Type="String" />
None.gif
</UpdateParameters>
None.gif
</asp:SqlDataSource>
None.gif
<asp:GridViewDataSourceID="Employees" Width="100%" RunAt="server"
None.gifDataKeyNames
="EmployeeID" AutoGenerateEditButton="true" />
7.错误检测
数据更新后控件调用的事件GridView.RowUpdated,DetailsView.ItemUpdated,SqlDataSource.Updated, etc.
处理“status”的事件,无论数据库是否异常允许数据库异常被处理或者再次抛弃,显示多少数据库行被修改
处理更新错误
None.gif<asp:SqlDataSourceID="Employees" RunAt="server" 
None.gifUpdateCommand
="" OnUpdated="OnUpdateComplete">
None.gif
None.gif
</asp:SqlDataSource>
None.gif
None.gifvoid OnUpdateComplete (Object source, SqlDataSourceStatusEventsArgse)
None.gif{
None.gifif (e.Exception!= null) {
None.gif// Exception thrown. Set e.ExceptionHandledto true to prevent
None.gif// the SqlDataSourcefrom throwing an exception, or leave it set
None.gif// to false to allow SqlDataSourceto rethrowthe exception
None.gif}
None.gifelse if (e.AffectedRows== 0) {
None.gif// No exception was thrown, but no records were updated,either.
None.gif// Might want to let the user know that the update failed
None.gif}
None.gif}



本文转自高海东博客园博客,原文链接:http://www.cnblogs.com/ghd258/archive/2005/11/17/278567.html,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
老朱教授
+ 关注