ASP.NET 2.0 绑定高级技巧 (转)


1.简单数据绑定定

<!--ASP.NET1.xdatabindingexpression-->
<%#DataBinder.Eval(Container.DataItem,"Price")%>
<!--EquivalentASP.NET2.0databindingexpression-->
<%#Eval("Price")%>
<!--XMLdatabinding-->
<%#XPath("Price")%>

2.数据源控件

控件名 控件描述
SqlDataSource 一切支持SQL语句的数据源控件
AccessDataSource Access数据源控件
XmlDataSource XML数据源控件
ObjectDataSource 自行编写组件的数据源控件
SiteMapDataSource页面导航控件的数据源控件

2.1 SqlDataSource关键属性

名称 描述
ConnectionString 连接数据库的连接字符串
SelectCommand 用于执行查询的命令
InsertCommand 用于执行插入的命令
UpdateCommand用于执行更新的命令
DeleteCommand 用于执行删除的命令
DataSourceMode 指定数据源类型是DataSet或DataReader(默认值
=DataSet)
ProviderName 指定供应商(默认值
=SQLServer.NETprovider)

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
="selectdistinctcountryfromcustomersorderbycountry"/>
<asp:SqlDataSourceID="Customers"RunAt="server"
ConnectionString
="server=localhost;database=northwind;"
SelectCommand
="select*fromcustomerswherecountry=@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"/>
CREATEPROCEDUREproc_GetCustomers
@Countrynvarchar(32)AS
SELECT*FROMCustomers
WHERECountry=@Country
GO
CREATEPROCEDUREproc_GetCustomers
CREATEPROCEDUREproc_GetCountriesAS
SELECTDISTINCTCountry
FROMCustomers
ORDERBYCountry
GO

3.XmlDataSource 使用XML 作为数据源
支持缓存与XSL 转换,只支持查询绑定,不支持更新

<asp:XmlDataSourceID="Rates"DataFile="Rates.xml"RunAt="server"/>
<asp:TreeViewID="MyTreeView"DataSourceID="Rates"RunAt="server"/>

3.1 XmlDataSource的关键属性

名称 描述
DataFileXML 数据文件的路径
TransformFile 含有XSL风格定义的数据文件路径
EnableCaching 指定是否开启cache(默认值=false)
XPathXPath 表达式用来确认数据
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 使用checkboxes显示一个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
="selectemployeeid,lastname,firstnamefromemployees"
UpdateCommand
="updateemployeessetlastname=@lastname,firstname=
@firstnamewhereemployeeid=@original_employeeidandlastname=
@original_lastnameandfirstname=@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>

voidOnUpdateComplete(Objectsource,SqlDataSourceStatusEventsArgse)
{
if(e.Exception!=null){
//Exceptionthrown.Sete.ExceptionHandledtotruetoprevent
//theSqlDataSourcefromthrowinganexception,orleaveitset
//tofalsetoallowSqlDataSourcetorethrowtheexception
}
elseif(e.AffectedRows==0){
//Noexceptionwasthrown,butnorecordswereupdated,either.
//Mightwanttolettheuserknowthattheupdatefailed
}
}
优质内容筛选与推荐>>
1、silverlight 数据绑定 数据源改变时自动传播到目标
2、Apache的三种工作模式
3、asp.net(C#)编辑规范
4、让 PowerDesigner 支持 SQLite!
5、Quartz框架来实现定时任务


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn