ASP.NET 2.0高级数据处理之数据绑定2
点击次数:25 次 发布日期:2008-11-26 11:15:31 作者:源代码网
|
源代码网推荐 源代码网推荐 <asp:DropDownList id="StateList" runat="server"> 源代码网推荐 <asp:ListItem>CA</asp:ListItem> 源代码网推荐 …… 源代码网推荐 </asp:DropDownList> 源代码网推荐 源代码网推荐 <asp:button ID="Button1" Text="Submit" OnClick="SubmitBtn_Click" runat="server"/> 源代码网推荐 Selected State: <asp:label ID="Label1" 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") 源代码网推荐 源代码网推荐 DropDown1.DataSource = values 源代码网推荐 DropDown1.DataBind 源代码网推荐 End If 源代码网推荐 End 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 = 1 To 9 源代码网推荐 dr = dt.NewRow() 源代码网推荐 dr(0) = i 源代码网推荐 dr(1) = "Item " + i.ToString() 源代码网推荐 dr(2) = DateTime.Now.ToShortTimeString 源代码网推荐 If (i Mod 2 <> 0) Then 源代码网推荐 dr(3) = True 源代码网推荐 Else 源代码网推荐 dr(3) = False 源代码网推荐 End If 源代码网推荐 "把数据行添加到表 源代码网推荐 dt.Rows.Add(dr) 源代码网推荐 Next 源代码网推荐 源代码网推荐 GridView1.DataSource = New DataView(dt) 源代码网推荐 GridView1.DataBind() 源代码网推荐 End If 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 下面的例子演示了如何绑定到Hashtable。 源代码网推荐 源代码网推荐 Sub Page_Load(sender As Object, e As EventArgs) 源代码网推荐 If Not IsPostBack Then 源代码网推荐 源代码网推荐 Dim h As Hashtable = new Hashtable() 源代码网推荐 h.Add ("key1", "value1") 源代码网推荐 h.Add ("key2", "value2") 源代码网推荐 h.Add ("key3", "value3") 源代码网推荐 源代码网推荐 MyDataList.DataSource = h 源代码网推荐 MyDataList.DataBind 源代码网推荐 End If 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 通常情况下,你可能希望绑定到页面或控件之前先处理数据。下面的例子演示了如何绑定到表达式和方法的返回值。 源代码网推荐 源代码网推荐 Sub Page_Load(sender As Object, e As EventArgs) 源代码网推荐 If Not IsPostBack Then 源代码网推荐 Dim values as ArrayList= new ArrayList() 源代码网推荐 源代码网推荐 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 源代码网推荐 End If 源代码网推荐 End Sub 源代码网推荐 源代码网推荐 Function EvenOrOdd(number As Integer) As String 源代码网推荐 If (number Mod 2 <> 0) Then 源代码网推荐 Return "Odd" 源代码网推荐 Else 源代码网推荐 Return "Even" 源代码网推荐 End If 源代码网推荐 End Function 源代码网推荐 源代码网推荐 <asp:DataList id="DataList1" ……> 源代码网推荐 <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("{0:c}", (CType(Container.DataItem, DataRowView)("IntegerValue"))) %> 源代码网推荐 源代码网推荐 这个语法很复杂并且不容易记住。与此形成对照的是,DataBinder.Eval是一个简单的方法,它只有三个参数:数据项的命名容器(naming container)、数据字段名称和格式化字符串。在模板化的控件(例如FormView、 GridView、DetailsView、DataList或Repeater)中,命名容器都是Container.DataItem。页面(Page)是另一种命名容器,也可以用于DataBinder.Eval。前面我们提到,ASP.NET 2.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,特别是在不需要格式化字符串的情况下。 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
