当前位置: 首页 > 编程日记 > 正文

ASP.NET 2.0 绑定高级技巧

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.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在<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
}
}

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

相关文章:

JSP中的EL表达式详细介绍

2019独角兽企业重金招聘Python工程师标准>>> 一、JSP EL语言定义 EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0…

Software development Problem

筹划“软件开发过程”以及“面向对象分析与设计”这个话题已有很长时间。虽然大学毕业后在Rational公司学习过这方面的内容&#xff0c;这几年带着团队也一直践行里面的理念与方法&#xff0c;但总感觉自己理解的不透彻&#xff0c;不敢动笔。 10年过去了&#xff0c;总不能一…

Spring MVC常用注解说明

2019独角兽企业重金招聘Python工程师标准>>> 使用Spring MVC的注解及其用法和其它相关知识来实现控制器功能。02 之前在使用Struts2实现MVC的注解时&#xff0c;是借助struts2-convention这个插件&#xff0c;如今我们使用Spring自带的spring-webmvc组件来实现同…

代码规范性与品质问题~

&#xff12;&#xff10;&#xff10;&#xff11;年在delphibbs做“首届Delphi编程竞赛”活动(http://www.delphibbs.com/delphibbs/dispq.asp?lid650664)的时候&#xff0c;曾就代码的规范性与品质问题与大家进行过讨论&#xff0c;摘录一些言论如下&#xff1a;3. 我们公司…

FutureTask中Treiber堆的实现

2019独角兽企业重金招聘Python工程师标准>>> 在文章FutureTask源码分析中简单说明了FutureTask中使用Treiber堆栈来保存等待结果的线程&#xff0c;本文将详细分析其原理。 Treiber堆使用CAS操作来实现节点的入栈和出栈&#xff0c;由于CAS操作只是保证操作的原子性…

软件开发过程中遇到的问题

今天早晨去石家庄河北电力工程监理有限公司&#xff0c;回来后就在整理这篇图文&#xff0c;结果还是过了12:00。这是针对昨天图文“Software Development Problem”的翻译以及自己的一些理解&#xff0c;分享给大家。 其实&#xff0c;看看这些东西蛮好的&#xff0c;最起码能…

Java基础学习总结(9)——this关键字

2019独角兽企业重金招聘Python工程师标准>>> 一、this关键字 this是一个引用&#xff0c;它指向自身的这个对象。 看内存分析图&#xff1a; 假设我们在堆内存new了一个对象&#xff0c;在这个对象里面你想象着他有一个引用this&#xff0c;this指向这个对象自己&am…

转贴:雅虎公司C#笔试题,看看你能解答多少

这是刚在在网上看到了&#xff0c;觉得这些题目出得真不错&#xff0c;能考出一个程序员的基本功。所以先发在这里&#xff0c;做个备份&#xff0c;以后慢慢来做&#xff08;偶好像只能免强及格哦&#xff0c;呵呵&#xff0c;关于网络的题目太多了&#xff0c;偶不太熟啊&…

亿级PV请求的三种负载均衡技术

在互联网不断渗透到生活中的今天&#xff0c;各种各样的网络服务存在在我们身边&#xff0c;他们的访问流量也是大得惊人。一个大型网站&#xff08;百万PV以上&#xff09;想要正常访问&#xff0c;单单靠一台服务器是不可能提供稳定服务的。这时候就需要用负载均衡技术将海量…

The Six Best Practices(1~3)

前几期的图文我们介绍了软件工程中常见的问题&#xff0c;分析了产生这些问题的根本原因&#xff0c;引出了软件工程中的六个最佳经验。今天我们具体介绍这些最佳经验的内容。

Java项目命名规范

2019独角兽企业重金招聘Python工程师标准>>> 一、命名规范 1、 项目名全部小写 2、 包名全部小写 3、 类名首字母大写&#xff0c;如果类名由多个单词组成&#xff0c;每个单词的首字母都要大写。 如&#xff1a;public class MyFirstClass{} 4、 变量名、方法名首字…

一道数据结构算法题

现有一个链表&#xff0c;证明如果存在环&#xff0c;则&#xff1a;使用两个指针同时前进但步长不一样&#xff0c;则能够在有限步之后能够相逢。题目的意思是我归纳出来的&#xff0c;我的解题思路是这样的&#xff1a;能够相下逢的意思是&#xff1a;在走了x步以后&#xff…

win7系统下载 ghost win7 Sp1 32位纯净3月版

win7系统下载 ghost win7 Sp1 32位纯净3月版软件名称: Ghost Win7 Sp1 32位纯净3月版软件语言: 简体中文软件大小: 3.81大小: GB发布日期: 2017-03-21文件名称: ZJY_Ghost_win 7_X86_CJ201703.GHOM D 5: C21A7A17D8C2568A05844C5…

The Six Best Practices(4~6)

昨天图文介绍了The Six Best Practices的前三个经验&#xff1a;迭代化开发、需求管理、基于构件的体系构架&#xff0c;今天介绍后面的三个经验&#xff1a;可视化建模、持续的质量验证和变更管理。

代码生成器前戏 之 数据库元数据

总结&#xff1a;代码生成器大致有两种方式&#xff0c;1.根据po 生成 表 结构 等系列类&#xff0c;如 Hibernate自动生成 2.根据表生成 po 等系列类。其实实际 开发时候 多半还是 先设计好表&#xff0c;然后生成 的情况多。 元数据&#xff1a;描述数据的数据&#xff0c;就…

有感于框架设计难,实施框架更难!

很久没有写了&#xff0c;不能怪没有时间&#xff0c;只是自己太懒。这两天休息&#xff0c;有时间重新回顾一下项目的设计&#xff0c;从目前的开发情况看&#xff0c;最早设计的一些编程框架&#xff0c;并没有很好的遵守&#xff0c;看上去比较零乱&#xff0c;这个可能由于…

六个最佳的软件工程实践(基于构件的体系结构、可视化建模)

昨天图文介绍了迭代化开发和需求管理&#xff0c;今天我们介绍基于构件的体系结构和可视化建模。基于构件的体系结构是软件开发中最体现创造力的地方&#xff0c;可以通过“修建桥梁”来理解为什么要贯彻基于构件的体系结构以指导我们每次开发的演进增量过程。可视化建模是为了…

通讯组基本管理任务一

经常收发邮件的人都有同感&#xff1a;很多时候都需要向一组人发送邮件。如果一封封地发送&#xff0c;不仅耽误时间&#xff0c;而且很容易出错&#xff0c;将邮件发送给不应该接受邮件的收件人。Exchange Server 2010为了方便用户使用&#xff0c;通过“通讯组”和“地址列表…

无人驾驶相关数据集

普林斯顿大学人工智能自动驾驶汽车项目&#xff1a; 代码V1&#xff1a;http://deepdriving.cs.princeton.edu/DeepDrivingCode_v1.zip 代码V2&#xff1a; http://deepdriving.cs.princeton.edu/DeepDrivingCode_v2.zip 训练集&#xff08;50G&#xff09;&#xff1a;http://…

六个最佳的软件工程实践(持续的质量验证、变更管理)

昨天图文介绍了基于构件的体系结构以及可视化建模&#xff0c;今天我们介绍六个最佳工程实践的最后两个&#xff0c;持续的质量验证以及变更管理。持续的质量验证是伴随迭代化开发而进行的不断验证&#xff0c;且每次迭代的测试集合都是不断递增的。质量验证不仅从功能方面要满…

css层叠样式表(一)

今天研究了下css。这东东入门不算难。可是想写出好的样式就得有很深的功底了。按照老大给网址&#xff0c;12天学会网页设计。做下总结吧。css通过div&#xff08;层&#xff09;来定位&#xff0c;通过层的margin,padding,border等属性来控制板块的间距。常用的模型是盒状模型…

aspx页面使用ajax遇到try catch中使用Response.End()报错

1、使用Ajax接收数据&#xff0c;在返回Response.Write()后应该调用Response.End()才能将数据写入到调用的页面,才能被jQuery的回调函数获取到返回的JSON数据 2、在try--catch里面不能用Response.End()&#xff0c;否则会报错&#xff1a;由于代码已经过优化或者本机框架位于调…

GO是更好的编程语言吗?

引言 团队有项目考虑用GO重写&#xff0c;所以花了些时间调研GO。 第一次接触GO是2年前&#xff0c;17年3月份&#xff0c;全职钻研一周&#xff0c;彼时C中毒太深&#xff0c;内心排斥其他编程语言&#xff0c;看其他语法总觉得有点怪&#xff0c;而且有“C/C能做任何事&#…

定位DIV滚动条

如果由于table中有一个下拉框&#xff0c;还有一个treeview时&#xff0c;treeview的所有节点都是取于下拉框的下拉选项来的&#xff0c;所以在第一定位这之后&#xff0c;当选择其他下拉框中其他的选项时&#xff0c;DIV的scrollTop值是会一直保存前一个步聚DIV滚动条所在的位…

JS作用域相关知识(#精)

在学习《你不知道的JS》一书中&#xff0c;特将作用域相关知识在此分享一下: #说到作用域&#xff0c;就不得不提到LHS查询和RHS查询: 1)如果查询目的是对变量进行赋值&#xff0c;则使用LHS查询 2)如果查询目的是获取变量的值&#xff0c;则使用RHS查询 作用域的查询都会从当前…

RUP within the context of the Six Best Practices

前面几期图文介绍了软件工程中常见的问题&#xff0c;以及找到它们的根本原因&#xff0c;提出了在软件工程实践中总结出来的六个最佳工程实践。迭代化开发、需求管理、基于构件的体系结构、可视化建模、持续的质量验证、变更管理。今天我们介绍Rational公司的RUP&#xff0c;看…

排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序...

先推荐一篇关于排序算法的文章&#xff1a;http://www.cppblog.com/guogangj/archive/2009/11/13/100876.html 本文思路部分来源于上篇文章&#xff0c;但测得的结果似乎不大相同&#xff0c;不知是因为java的缘故还是因为我算法的缘故&#xff0c;欢迎拍砖。 复习排序&#xf…

项目存档管理规范

项目存档管理规范 在我们开发过很多个项目之后&#xff0c;每个项目都会累积下很多源码、文档等&#xff0c;查找和整理起来很不方便&#xff0c;如果我们又要同时工作于多个项目的话&#xff0c;情况会更糟。所以对每个项目的各种档案进行有效管理很有必要&#xff0c;从公司层…

review what i studied `date` - 2017-4-12

python 连接字符串 int srt >>> a 1 >>> b xuhui >>> a b Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: unsupported operand type(s) for : int and str >>> b str(a)…

StaticFactoryMethod_Level1

以下代码是“简单工厂模式”的第一个例子&#xff1a;