首页 > ASP.NET 2.0 绑定高级技巧

ASP.NET 2.0 绑定高级技巧

1.简单数据绑定定



<%# DataBinder.Eval(Container.DataItem, "Price"%>



<%Eval("Price"%>



<%# 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脱离,两种数据绑定方式

SelectMethod, InsertMethod, UpdateMethod,and DeleteMethod

可选择是否使用缓存,可选择是否使用参数

4.1 ODS 关键属性

ODS 关键属性

名称                                                         描述

InsertParameters                                    指定插入方法参数

UpdateParameters                                 指定更新方法参数

DeleteParameters                                   指定删除方法参数

SelectParameters                                    指定查询方法参数

CacheDuration                                       缓存间隔时间以秒为单位

SqlCacheDependency                          基于某个数据实体的缓存

创建和清除

ObjectDataSource.SelectMethod 可以使用静态方法也可以使用一个类的新实例

如果使用实例方法:ODS 在每次调用的时候创建一个新实例类必须具有公共的建构函数

使用ObjectCreated 和ObjectDisposing 元素可以初始化和撤销函数
5.增强的DataGrid 控件

支持复杂的数据单元格类型,包括CheckBoxFields在 元素中声明高可定制的用户界面

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

}

}

转载于:https://www.cnblogs.com/Cohlint/archive/2005/12/02/289309.html

更多相关:

  • //ASP.NET中的DataList和Repeater提供了简单快速的方法來显示,其间,我们可以使用更是使我们能随心所欲的控制数据的排放样式! //.可惜的是它们不像Datagrid那样,有内置的分页功能。 // //如何解决呢? // //其实我们可以用【PagedDataSource】 类来解决分页...

  • 情况一:后台给的日期是Sat Jul 31 2021 21:50:01 GMT+0800 (中国标准时间),如果直接呈现给用户,他们一定会吐槽你不说人话~~~ 情况二:后台给的百分数是小数没有转化成00%格式 采用vue的过滤机制就可以解决这种情况,有两种方式: 第一种:全局写法,在main.js里面加入 // 【...

  • 问题描述 使用main函数的参数,实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:输入test.exe  -a 1 2       执行1+2输出3 问题分析 上面的逻辑思维很简单,但是问题在于如何在VS中向...

  • ------------------------siwuxie095                         MyBatis 中 #{} 和 ${} 的区别       1、在 MyBatis 的映射配置文件中,动态传递参数有两种方式:    (1)#{} 占位符    (2)${} 拼接符          2、#{} 和...

  •     #2.6 map()# 第一个参数传入一个函数,,第二个参数为一个可迭代对象li_1 = (1,3,5,7)def funcA(x): return x*xm1 = map(funcA,li_1)print(type(m1))print(m1())# 2.6 reduce()# 第一个参数传入一个函数,第二个参数 可以迭...

  • 列表,元组,字典的转换。 list列表是一组可变的元素集合 列表是'[]'括号组成的,[]括号包含所有元素,列表的创建可以传递字符串,也可以传递多个字符串来创建列表。如"asd", / "a","b" ... tuple元组的创建和列表一致,区别在于 元组是以'()'创建的,并且元组数据不可变。 dict字典不同于列表和元组,他...