仓酷云

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

[学习教程] ASP.NET网页编程之ASP.NET 2.0初级数据处置之数据绑定

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

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

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

x
来吧!老师们!我代表千千万万的asp.net/C#的初学者在这里呼唤着!asp.net|初级|数据<P>  在后面的"模板中的数据绑定"部分中我们叙述过,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,出格是在不必要格局化字符串的情形下。呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。
只想知道 该用户已被删除
沙发
发表于 2015-1-19 23:51:29 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
admin 该用户已被删除
板凳
发表于 2015-1-26 22:52:39 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
谁可相欹 该用户已被删除
地板
发表于 2015-2-4 21:17:56 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
第二个灵魂 该用户已被删除
5#
发表于 2015-2-10 12:20:28 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
蒙在股里 该用户已被删除
6#
发表于 2015-3-1 10:38:07 | 只看该作者
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!
老尸 该用户已被删除
7#
发表于 2015-3-10 14:52:02 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
8#
发表于 2015-3-17 08:09:43 | 只看该作者
主流网站开发语言之PHPHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。
小魔女 该用户已被删除
9#
发表于 2015-3-24 03:01:42 | 只看该作者
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-17 02:43

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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