ASP.NET 2.0 绑定高级技巧

原创 2007年09月13日 16:12:00

1.简单数据绑定定

<!--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.6 调研存储过程例子

<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脱离,两种数据绑定方式
SelectMethod, InsertMethod, UpdateMethod,and DeleteMethod
可选择是否使用缓存,可选择是否使用参数

4.1 ODS 关键属性

ODS 关键属性
名称                                                         描述
InsertParameters                                    指定插入方法参数
UpdateParameters                                 指定更新方法参数
DeleteParameters                                   指定删除方法参数
SelectParameters                                    指定查询方法参数
CacheDuration                                       缓存间隔时间以秒为单位
SqlCacheDependency                          基于某个数据实体的缓存
创建和清除
ObjectDataSource.SelectMethod 可以使用静态方法也可以使用一个类的新实例
如果使用实例方法:ODS 在每次调用的时候创建一个新实例类必须具有公共的建构函数
使用ObjectCreated 和ObjectDisposing 元素可以初始化和撤销函数

5.增强的DataGrid 控件
支持复杂的数据单元格类型,包括CheckBoxFields在<Columns> 元素中声明高可定制的用户界面gridView 列类型:

名称                                              描述
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
}
}

 

使用Gridview绑定数据库中的图片

使用Gridview绑定数据库中的图片 注:此系列记录在我实际开发中遇到的问题和收藏一些技巧文章。 我们都知道,在Gridview中不能直接去绑定数据库中的图片,我们可以利用HttpHan...
  • u013948190
  • u013948190
  • 2015年08月08日 08:59
  • 389

面试题(ASP.NET高级进阶)

1.ASP.NET新特性 1.1 什么是dynamically Typed 分析:C#中dynamic的正确用法 解答:dynamic的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进...
  • xc917563264
  • xc917563264
  • 2017年04月04日 20:48
  • 901

JavaScript高级技巧

下述内容主要讲述了《JavaScript高级程序设计(第3版)》第22章关于“高级技巧”。 一、高级函数函数是第一等公民,所有函数都是对象。1. 安全的类型检测JavaScript内置的类型检测机制并...
  • ligang2585116
  • ligang2585116
  • 2016年05月05日 21:13
  • 6009

百度高级搜索技巧

点我进入原文 百度高级搜索技巧   1.“”——精确匹配 如果输入的查询词很长,百度在经过分析后,给出的搜索结果中的查询词,可能是拆分的。如果...
  • zhyh1435589631
  • zhyh1435589631
  • 2016年05月02日 13:39
  • 969

最新常用的Google 高级搜索技巧

信息过剩时代,工作效率更多意味着单位时间获取的有效信息量,和达到有效信息的时间代价。虽不想黑百度,对于百度搜索的结果,只能呵呵哒。 实际工作中,特别受益于 google 的高级搜索,本着我为人...
  • u012946824
  • u012946824
  • 2016年11月16日 11:59
  • 1615

asp.net web api 2.0 实现跨域资源共享

asp.net web api 2 对跨域资源共享的支持1. 同源策略:同源策略是浏览器为保证安全最基本的功能, 只有同源的脚本才能够被执行,那么什么是同源呢?同源是指协议,域名以及端口号都相同,任何...
  • zhanxueguang
  • zhanxueguang
  • 2015年07月09日 20:47
  • 1351

Asp.Net Core 2.0 生成操作数据库文件需要的文件

开发环境 VS2017 + Win7 x64 生成操作数据库文件需要配置或添加的文件 1、Startup.cs public IConfiguration Configuratio...
  • king_hh
  • king_hh
  • 2017年12月29日 16:50
  • 80

oracle小技巧

1、oracle分页        select * from (select a.*, rownum rn from (select * from tabel order by XX) a wher...
  • chenshourui
  • chenshourui
  • 2015年04月08日 23:20
  • 412

理解ASP.NET MVC中的模型绑定

模型绑定的本质     任何控制器方法的执行都受action invoker组件(下文用invoker代替)控制。对于每个Action方法的参数,这个invoker组件都会获取一个Model Bin...
  • dyllove98
  • dyllove98
  • 2013年06月15日 14:33
  • 5033

asp.net中的各种数据绑定使用

翻出以前的asp.net学习笔记,发现很多有关Gridview中的数据绑定使用,发上来大家看看,新手参考(控件党神器,嘿嘿。。。),高手莫笑! 1、Gridview设置时间格式 2、绑定后台函...
  • wangqiuyun
  • wangqiuyun
  • 2013年06月30日 00:03
  • 9863
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET 2.0 绑定高级技巧
举报原因:
原因补充:

(最多只允许输入30个字)