仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 707|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之ASP.NET 2.0初级数据处置之数据绑定语法...

[复制链接]
若相依 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:49:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)asp.net|初级|数据|语法  在后面的"模板中的数据绑定"部分中我们叙述过,ASP.NET包括了一种宣布式的数据绑定语法,用于在数据绑定模板中把数据源字段与控件的属性相干联。你也能够在代码中利用<%#...>语法来举行恣意值的数据绑定,比方页面和控件属性、汇合、表达式,乃至于办法挪用的前往了局。为了强迫盘算数据绑定的值,你必需在包括数据绑定语法的页面或控件上挪用DataBind办法。上面的表格显现了ASP.NET中的数据绑定语法的一些例子。

单个属性Customer:<%#custID%>汇合Orders<asp:ListBoxid="List1"datasource=<%#myArray%>runat="server">表达式Contact<%#(customer.FirstName+""+customer.LastName)%>办法的前往值OutstandingBalance:<%#GetBalance(custID)%>  
  只管下面的语法与ASP的Response.Write便利语法(<%=%>)看起来相似,可是它们的举动却毅然分歧。ASPResponse.Write便利语法在页面处置的时分盘算值,而ASP.NET数据绑定语法只在DataBind办法被挪用的时分才盘算值。

  DataBind是页面和一切务器控件的一个办法。当你挪用父控件的DataBind的时分,它会顺次挪用一切子控件的DataBind办法。比方,DataList1.DataBind()就会挪用DataList模板中的一切控件的DataBind办法。挪用页面的DataBind办法--Page.DataBind()或复杂地挪用DataBind()--会激发页面上一切的数据绑定表达式的盘算操纵。一般只在页面的Page_Load事务中挪用DataBind办法,以下面的例子所示。
在.aspx页面的任何宣布式片段中,你都可使用绑定语法,并为它的估值指定运转时所希冀的数据范例。下面例子中的复杂属性、表达式和办法在被盘算的时分会向用户显现文本内容。在这类情形下,数据绑定表达式的值是String范例的。在下面的汇合例子中,数据绑定语法的值的范例是ListBox的DataSource属性。你会发明在绑定表达式中强迫转换值的范例关于天生希冀的了局是需要的。比方,假如count是一个整数:

NumberofRecords:<%#count.ToString()%>
  ASP.NET数据绑定语法撑持大众变量、页面的属性和页面中别的控件的属性的绑定。上面的例子演示了怎样绑定到大众变量和页面的复杂属性。请注重,在DataBind()被挪用之前,这些值都已初始化过了。

<scriptlanguage="VB"runat="server">
SubPage_Load(senderAsObject,eAsEventArgs)
 Page.DataBind
EndSub

ReadOnlyPropertycustID()AsString
 Get
  Return"ALFKI"
 EndGet
EndProperty

ReadOnlyPropertyorderCount()AsInteger
 Get
  Return11
 EndGet
EndProperty
</script>
<formaction="DataBind1_vb.aspx"runat="server">
Customer:<b><%#custID%></b><br/>
OpenOrders:<b><%#orderCount%></b>
</form>
  上面的例子演示怎样绑定到另外一个控件的属性:

<asp:DropDownListid="StateList"runat="server">
<asp:ListItem>CA</asp:ListItem>
……
</asp:DropDownList>

<asp:buttonID="Button1"Text="Submit"runat="server"/>
SelectedState:<asp:labelID="Label1"text=<%#StateList.SelectedItem.Text%>runat="server"/><P>  列表范例的服务器控件(比方DropDownList、ListBox和HTMLSelect)把汇合作为数据源。上面的例子演示怎样绑定到通用言语运转时汇合范例。这些控件只能绑定到撑持Ienumerable、Icollection或IlistSource接口的汇合。更加罕见的是,它能够绑定到ArrayList、Hashtable、DataView和DataReader。上面的例子演示了怎样绑定到ArrayList。

SubPage_Load(senderAsObject,eAsEventArgs)
IfNotIsPostBackThen
 DimvaluesasArrayList=newArrayList()
 values.Add("IN")
 values.Add("KS")
 values.Add("MD")
 values.Add("MI")
 values.Add("OR")
 values.Add("TN")

 DropDown1.DataSource=values
 DropDown1.DataBind
EndIf
EndSub
  上面的例子演示了怎样绑定到DataView。请注重DataView类是在System.Data名字空间中界说的。

SubPage_Load(senderAsObject,eAsEventArgs)
 IfNotIsPostBackThen
  DimdtAsDataTable
  DimdrAsDataRow
  DimiAsInteger

  创建DataTable
  dt=NewDataTable
  dt.Columns.Add(NewDataColumn("IntegerValue",GetType(Integer)))
  dt.Columns.Add(NewDataColumn("StringValue",GetType(String)))
  dt.Columns.Add(NewDataColumn("DateTimeValue",GetType(DateTime)))
  dt.Columns.Add(NewDataColumn("BooleanValue",GetType(Boolean)))

  添补一些数据

  Fori=1To9
   dr=dt.NewRow()
   dr(0)=i
   dr(1)="Item"+i.ToString()
   dr(2)=DateTime.Now.ToShortTimeString
   If(iMod2<>0)Then
    dr(3)=True
   Else
    dr(3)=False
   EndIf
   把数据行增加到表
   dt.Rows.Add(dr)
  Next

  GridView1.DataSource=NewDataView(dt)
  GridView1.DataBind()
 EndIf
EndSub
  上面的例子演示了怎样绑定到Hashtable。

SubPage_Load(senderAsObject,eAsEventArgs)
 IfNotIsPostBackThen
 
  DimhAsHashtable=newHashtable()
  h.Add("key1","value1")
  h.Add("key2","value2")
  h.Add("key3","value3")

  MyDataList.DataSource=h
  MyDataList.DataBind
 EndIf
EndSub
  一般情形下,你大概但愿绑定到页面或控件之前先处置数据。上面的例子演示了怎样绑定到表达式和办法的前往值。

SubPage_Load(senderAsObject,eAsEventArgs)
 IfNotIsPostBackThen
  DimvaluesasArrayList=newArrayList()

  values.Add(0)
  values.Add(1)
  values.Add(2)
  values.Add(3)
  values.Add(4)
  values.Add(5)
  values.Add(6)

  DataList1.DataSource=values
  DataList1.DataBind
 EndIf
EndSub

FunctionEvenOrOdd(numberAsInteger)AsString
 If(numberMod2<>0)Then
  Return"Odd"
 Else
  Return"Even"
 EndIf
EndFunction

<asp:DataListid="DataList1"……>
<ItemTemplate>
 NumberValue:<%#Container.DataItem%>
 Even/Odd:<%#EvenOrOdd(Container.DataItem)%>
</ItemTemplate>
</asp:DataList>
<P>  ASP.NET页面框架组件供应了一个静态的办法,它预算提早绑定(late-bound)的数据绑定表达式并能够选择把其了局格局化为字符串。在这类情形下,DataBinder.Eval很便利,由于它打消了开辟者把估值转会为希冀的数据范例所必需实行的良多显式转化事情。当模板化列表中无数据绑定控件的时分,它出格有效处,由于在那种情形下,一般数据行和数据字段都必需转换。

  看看上面的例子,它必要把整数显现为泉币字符串。在尺度的ASP.NET数据绑定语法中,你必需起首转换数据行的范例以检索数据字段IntegerValue。接着把它作为参数传送给String.Format办法。

<%#String.Format("{0:c}",(CType(Container.DataItem,DataRowView)("IntegerValue")))%>
  这个语法很庞大而且不简单记着。与此构成对比的是,DataBinder.Eval是一个复杂的办法,它只要三个参数:数据项的定名容器(namingcontainer)、数据字段称号和格局化字符串。在模板化的控件(比方FormView、GridView、DetailsView、DataList或Repeater)中,定名容器都是Container.DataItem。页面(Page)是另外一种定名容器,也能够用于DataBinder.Eval。后面我们提到,ASP.NET2.0为DataBinder.Eval供应了一个新的简化的语法(Eval),你能够在数据绑定的控件模板中利用它来主动剖析Container.DataItem。

<%#DataBinder.Eval(Container.DataItem,"IntegerValue","{0:c}")%>
<%#Eval("IntegerValue","{0:c}")%>
  格局化字符串参数是可选的。假如省略了这个参数,DataBinder.Eval会前往Object范例值,以下所示:

<%#CType(DataBinder.Eval(Container.DataItem,"BoolValue"),Boolean)%>
  我们要重点注重的是,与尺度的数据绑定语法比拟,DataBinder.Eval会分明地影响功能,这是由于它利用了提早绑定的反射(reflection)。请明智地利用DataBinder.Eval,出格是在不必要格局化字符串的情形下。因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。
柔情似水 该用户已被删除
沙发
发表于 2015-1-20 05:16:07 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
再见西城 该用户已被删除
板凳
发表于 2015-1-26 15:45:13 | 只看该作者
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
因胸联盟 该用户已被删除
地板
发表于 2015-2-4 15:50:04 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-10 03:27:03 | 只看该作者
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
小女巫 该用户已被删除
6#
发表于 2015-2-28 18:21:05 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
乐观 该用户已被删除
7#
发表于 2015-3-10 04:06:31 | 只看该作者
当然我们在选择Asp.net主机是,除了要考虑服务提供商在版本是否是实时更新以外,机房的环境和配置也是非常重要的,通常选择骨干网的机房,在速度和稳定性上会非常有保证。
兰色精灵 该用户已被删除
8#
发表于 2015-3-17 04:12:11 | 只看该作者
ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。
小妖女 该用户已被删除
9#
发表于 2015-3-23 19:20:00 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 17:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表