知识大全 ASP.NET 2.0高级数据处理之数据绑定

Posted

篇首语:人勤地生宝,人懒地生草。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET 2.0高级数据处理之数据绑定相关的知识,希望对你有一定的参考价值。

ASP.NET 2.0高级数据处理之数据绑定  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

在前面的 模板中的数据绑定 部分中我们论述过 ASP NET包含了一种宣告式的数据绑定语法 用于在数据绑定模板中把数据源字段与控件的属性相关联 你也可以在代码中使用<%# >语法来进行任意值的数据绑定 例如页面和控件属性 集合 表达式 甚至于方法调用的返回结果 为了强制计算数据绑定的值 你必须在包含数据绑定语法的页面或控件上调用DataBind方法 下面的表格显示了ASP NET中的数据绑定语法的一些例子 单个属性 Customer: <%# custID %> 集合 Orders <asp:ListBox id= List datasource= <%# myArray %> runat= server > 表达式 Contact <%# ( customer FirstName + + customer LastName ) %> 方法的返回值 Outstanding Balance: <%# GetBalance(custID) %>     尽管上面的语法与ASP的Response Write便捷语法(<%= %>)看起来类似 但是它们的行为却决然不同 ASP Response Write便捷语法在页面处理的时候计算值 而ASP NET数据绑定语法只在DataBind方法被调用的时候才计算值   DataBind是页面和所有务器控件的一个方法 当你调用父控件的DataBind的时候 它会依次调用所有子控件的DataBind方法 例如 DataList DataBind()就会调用DataList模板中的所有控件的DataBind方法 调用页面的DataBind方法 Page DataBind() 或简单地调用 DataBind() 会引发页面上所有的数据绑定表达式的计算操作 通常只在页面的Page_Load事件中调用DataBind方法 如下面的例子所示 在 aspx页面的任何宣告式片断中 你都可以使用绑定语法 并为它的估值指定运行时所期望的数据类型 上面例子中的简单属性 表达式和方法在被计算的时候会向用户显示文本内容 在这种情况下 数据绑定表达式的值是String类型的 在上面的集合例子中 数据绑定语法的值的类型是ListBox的DataSource属性 你会发现在绑定表达式中强制转换值的类型对于生成期望的结果是必要的 例如 如果count是一个整数 Number of Records: <%# count ToString() %>  ASP NET数据绑定语法支持公共变量 页面的属性和页面中其它控件的属性的绑定 下面的例子演示了如何绑定到公共变量和页面的简单属性 请注意 在DataBind()被调用之前 这些值都已经初始化过了 <script language= VB runat= server >Sub Page_Load(sender As Object e As EventArgs)  Page DataBindEnd SubReadOnly Property custID() As String Get  Return ALFKI  End GetEnd PropertyReadOnly Property orderCount() As Integer Get  Return  End GetEnd Property </script> <form action= DataBind _vb aspx runat= server >Customer: <b><%# custID %></b><br />Open Orders: <b><%# orderCount %></b></form>  下面的例子演示如何绑定到另一个控件的属性 <asp:DropDownList id= StateList runat= server ><asp:ListItem>CA</asp:ListItem>……</asp:DropDownList><asp:button ID= Button Text= Submit OnClick= SubmitBtn_Click runat= server />Selected State: <asp:label ID= Label text= <%# StateList SelectedItem Text %> runat= server />  列表类型的服务器控件(例如DropDownList ListBox和HTMLSelect)把集合作为数据源 下面的例子演示如何绑定到通用语言运行时集合类型 这些控件只能绑定到支持Ienumerable Icollection或IlistSource接口的集合 更为常见的是 它可以绑定到ArrayList Hashtable DataView和DataReader 下面的例子演示了如何绑定到ArrayList Sub Page_Load(sender As Object e As EventArgs) If Not IsPostBack Then Dim values as ArrayList= new ArrayList() values Add ( IN ) values Add ( KS ) values Add ( MD ) values Add ( MI ) values Add ( OR ) values Add ( TN ) DropDown DataSource = values DropDown DataBindEnd IfEnd Sub

  下面的例子演示了如何绑定到DataView 请注意DataView类是在System Data名字空间中定义的

Sub Page_Load(sender As Object e As EventArgs)  If Not IsPostBack Then   Dim dt As DataTable  Dim dr As DataRow  Dim i As Integer   建立DataTable  dt = New DataTable  dt Columns Add(New DataColumn( IntegerValue GetType(Integer)))  dt Columns Add(New DataColumn( StringValue GetType(String)))  dt Columns Add(New DataColumn( DateTimeValue GetType(DateTime)))  dt Columns Add(New DataColumn( BooleanValue GetType(Boolean)))   填充一些数据  For i = To    dr = dt NewRow()   dr( ) = i   dr( ) = Item + i ToString()   dr( ) = DateTime Now ToShortTimeString   If (i Mod <> ) Then    dr( ) = True   Else    dr( ) = False   End If    把数据行添加到表   dt Rows Add(dr)  Next  GridView DataSource = New DataView(dt)  GridView DataBind() End IfEnd Sub  下面的例子演示了如何绑定到Hashtable Sub Page_Load(sender As Object e As EventArgs) If Not IsPostBack Then   Dim h As Hashtable = new Hashtable()  h Add ( key value )  h Add ( key value )  h Add ( key value )  MyDataList DataSource = h  MyDataList DataBind End IfEnd Sub  通常情况下 你可能希望绑定到页面或控件之前先处理数据 下面的例子演示了如何绑定到表达式和方法的返回值 Sub Page_Load(sender As Object e As EventArgs) If Not IsPostBack Then  Dim values as ArrayList= new ArrayList()  values Add ( )  values Add ( )  values Add ( )  values Add ( )  values Add ( )  values Add ( )  values Add ( )  DataList DataSource = values  DataList DataBind End IfEnd SubFunction EvenOrOdd(number As Integer) As String If (number Mod <> ) Then  Return Odd  Else  Return Even  End IfEnd Function<asp:DataList id= DataList ……><ItemTemplate> Number Value: <%# Container DataItem %> Even/Odd: <%# EvenOrOdd(Container DataItem) %></ItemTemplate></asp:DataList>

  ASP NET页面框架组件提供了一个静态的方法 它估算延迟绑定(late bound)的数据绑定表达式并可以选择把其结果格式化为字符串 在这种情况下 DataBinder Eval很方便 因为它消除了开发者把估值转会为期望的数据类型所必须执行的很多显式转化工作 当模板化列表中有数据绑定控件的时候 它特别有用处 因为在那种情况下 通常数据行和数据字段都必须转换   看看下面的例子 它需要把整数显示为货币字符串 在标准的ASP NET数据绑定语法中 你必须首先转换数据行的类型以检索数据字段IntegerValue 接着把它作为参数传递给String Format方法

<%# String Format( :c (CType(Container DataItem DataRowView)( IntegerValue ))) %>  这个语法很复杂并且不容易记住 与此形成对照的是 DataBinder Eval是一个简单的方法 它只有三个参数 数据项的命名容器(naming container) 数据字段名称和格式化字符串 在模板化的控件(例如FormView GridView DetailsView DataList或Repeater)中 命名容器都是Container DataItem 页面(Page)是另一种命名容器 也可以用于DataBinder Eval 前面我们提到 ASP NET 为DataBinder Eval提供了一个新的简化的语法(Eval) 你可以在数据绑定的控件模板中使用它来自动解析Container DataItem <%# DataBinder Eval(Container DataItem IntegerValue :c ) %><%# Eval( IntegerValue :c ) %>  格式化字符串参数是可选的 如果省略了这个参数 DataBinder Eval会返回Object类型值 如下所示 <%# CType(DataBinder Eval(Container DataItem BoolValue ) Boolean) %>  我们要重点注意的是 与标准的数据绑定语法相比 DataBinder Eval会明显地影响性能 这是因为它使用了延迟绑定的反射(reflection) 请明智地使用DataBinder Eval 特别是在不需要格式化字符串的情况下 cha138/Article/program/net/201311/13817

相关参考

知识大全 ASP.NET 2.0高级数据处理之使用参数

ASP.NET2.0高级数据处理之使用参数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!你可以处理

知识大全 ASP.NET 2.0高级数据处理之冲突检测

ASP.NET2.0高级数据处理之冲突检测  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!前面我们提

知识大全 ASP.NET 2.0高级数据处理之处理控件事件

ASP.NET2.0高级数据处理之处理控件事件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在前面

知识大全 ASP.NET 2.0中实现模板中的数据绑定

ASP.NET2.0中实现模板中的数据绑定  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  模板化

知识大全 ASP.NET之数据绑定2

ASP.NET之数据绑定2  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 ASP.NET 2.0高级控件之FileUpload控件

ASP.NET2.0高级控件之FileUpload控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 C#+ASP.NET 2.0 定制复合组件之高级篇

C#+ASP.NET2.0定制复合组件之高级篇  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一

知识大全 ASP.NET数据绑定—多样的绑定方式

ASP.NET数据绑定—多样的绑定方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在这个系列

知识大全 深入ASP.NET数据绑定(上)

深入ASP.NET数据绑定(上)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASPNET我

知识大全 ASP.NET数据绑定控件比较浅析

ASP.NET数据绑定控件比较浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET数