分享
 
 
 

关于ASP.NET2.0如何绑定高级技巧

王朝asp·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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

GO3.XmlDataSource 使用XML 作为数据源

支持缓存与XSL 转换,只支持查询绑定,不支持更新

<asp:XmlDataSourceID="Rates" DataFile="Rates.xml" RunAt="server" /

<asp:TreeViewID="MyTreeView" DataSourceID="Rates" RunAt="server" /

3 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. 冲突判定

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

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有