仓酷云

标题: ASP网页编程之Mastering ASP.Net DataBinding [打印本页]

作者: 乐观    时间: 2015-1-16 23:40
标题: ASP网页编程之Mastering ASP.Net DataBinding
ASP由于使用了COM组件所以它会变的十分强大,但是这样的强大由于WindowsNT系统最初的设计问题而会引发大量的安全问题。只要在这样的组件或是操作中一不注意,哪么外部攻击就可以取得相当高的权限而导致网站瘫痪或者数据丢失;asp.net|asp.netbegin:

MasteringASP.NetDataBinding
KarlSeguin?karlseguin@hotmail.com


TableofContents
Introduction
TheSampleProgram
UnderstandingDataItem
Formatting
Inline
OnItemDataBound
OnItemCreated
NestedBinding
Inline
OnItemDataBound
HandlingEvents
Download

ThisarticleisavailableatCodeProject.Checkitouttomakecomments,discussorratethearticle

IdliketothankJean-ClaudeManolifordevelopinghisC#Codeformat,whichiusedinwritingthistutorial.
Introduction
Questionsregardingdatabinding,inoneformoranother,areprobablythemostaskedintheaspnetnewsgroups.Itscleareveryonelovestheideaofdatabindingbutthatmoreadvancedfunctionality,suchaseventhandling,conditionalformattingandfine-tuning,arentstraightforward.Thegoalofthistutorialisshedlightonsomeofthemorecommonandfrequentlyaskedquestionsaboutthecapabilitiesofdatabinding.
TheSampleProgram
Throughoutthistutorialwellusetwoseparatedatasources.Thefirstwillbeyourevery-daydataset,theotherwillbeastrongly-typedcustomcollectioncontainingstrongly-typedobjects.

Ourdatasetwillcontaintwotables,CustomersandOrders:
CustomerStructureOrderStructure
NameTypeDescriptionNameTypeDescription
CustomerId1Int32UniquecustomeridentifierOrderIdInt32Uniqueorderidentifier
NameStringNameofthecustomerCustomerId1Int32Identifierofthecustomwhoplacedtheorder
ZipStringCustomersprimaryZIPorPortalcodeOrderedDateTimeDatetheorderwasplacedon
EnabledBooleanWhetherthecustomeriscurrentlyactive/enabledAmountDecimalDollarvalueoftheorder

1ADataRelationexistsbetweentheCustomer.CustomerIdandOrder.CustomerIdcolumns.

OurbusinessentitieswillconsistofanOwnerandaPetclass:
OwnerStructurePetsStructure
NameTypeDescriptionNameTypeDescription
OwnerIdInt32UniqueowneridentifierPetIdInt32Uniquepetidentifier
YearOfBirthInt32TheyeartheownerwasborninNameStringNameofthepet
FirstNameStringOwnersfirstnameIsNeuturedBooleanWhetherornotthepetisneutured
LastNameStringOwnerslastnameTypePetTypeIndicatesthetypeofpet(Dog,Cat,Fish,Bird,Rodent,Other)
PetsPetCollectionCollectionofpetstheownerhas

UnderstandingDataItem
YouveundoudbtedlymadefrequentuseoftheDataItemproperty,namelywhenusingtheDataBindingsyntaxtooutputavalue:
1:<%#DataBinder.Eval(Container.DataItem,"customerId")%>
ItsimportanttounderstandthatDataItemisactuallyanobject,andthatwhenyouusetheDataBinder.Evalfunction,itbasicallyneedstofigureoutwhattypeofobjectitisandhowtoget"customerId"fromit.ThatsbecauseyourDataSourcecanbedifferentthings,suchasadatasetordataview,anarraylistorhashtable,acustomcollectionandmore.Bindinghappensonarow-by-rowbasisandDataItemactuallyrepresentsthecurrentrowbeingbound.ForaDataSet,DataTableorDataViewDataItemisactuallyaninstanceofDataRowView(youmightthinkthattheDataItemforaDataSetorDataTablewouldbeaninstanceofDataRow,butwhenyoubindeitherofthese,theDefaultViewisactuallyused,thereforeDataItemwillalwaysbeaDataRowView).Whenyouarebindingtoacollection,DataItemisaninstanceoftheitemwithinthecollection.Wecanobservethismoreclearlywiththefollowingcode:
1:<%@Importnamespace="System.Data"%>
2:<%@Importnamespace="BindingSample"%>
3:<asp:Repeaterid="dataSetRepeater"Runat="server">
4:<ItemTemplate>
5:<%#((DataRowView)Container.DataItem)["customerId"]%>-
6:<%#((DataRowView)Container.DataItem)["Name"]%><br/>
7:</ItemTemplate>
8:<AlternatingItemTemplate>
9:<%#DataBinder.Eval(Container.DataItem,"customerId")%>-
10:<%#DataBinder.Eval(Container.DataItem,"Name")%><br/>
11:</AlternatingItemTemplate>
12:</asp:Repeater>
13:
14:<br><br>
15:
16:<asp:Repeaterid="collectionRepeater"Runat="server">
17:<ItemTemplate>
18:<%#((Owner)Container.DataItem).OwnerId%>-
19:<%#((Owner)Container.DataItem).FirstName%><</p>缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。
作者: 灵魂腐蚀    时间: 2015-1-20 10:58
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
作者: 精灵巫婆    时间: 2015-1-23 13:52
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
作者: 爱飞    时间: 2015-1-24 16:32
虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。
作者: 海妖    时间: 2015-2-7 18:04
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
作者: 兰色精灵    时间: 2015-2-22 20:12
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
作者: 变相怪杰    时间: 2015-3-7 02:02
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
作者: 第二个灵魂    时间: 2015-3-14 04:02
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
作者: 老尸    时间: 2015-3-21 00:20
尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性,比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2