欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
ASP.NET 2.0高級數據處理之數據綁定
  ASP.NET包含了一種宣告式的數據綁定語(yǔ)法,用于在數據綁定模板中把數據源字段與控件的屬性相關(guān)聯(lián)。你也可以在代碼中使用<%# ... >語(yǔ)法來(lái)進(jìn)行任意值的數據綁定,例如頁(yè)面和控件屬性、集合、表達式,甚至于方法調用的返回結果。為了強制計算數據綁定的值,你必須在包含數據綁定語(yǔ)法的頁(yè)面或控件上調用DataBind方法。下面的表格顯示了ASP.NET中的數據綁定語(yǔ)法的一些例子。

單個(gè)屬性 Customer: <%# custID %>
集合 Orders <asp:ListBox id="List1" datasource=‘<%# myArray %>‘ runat="server">
表達式 Contact <%# ( customer.FirstName + " " + customer.LastName ) %>
方法的返回值 Outstanding Balance: <%# GetBalance(custID) %>
  
  盡管上面的語(yǔ)法與ASP的Response.Write便捷語(yǔ)法(<%= %>)看起來(lái)類(lèi)似,但是它們的行為卻決然不同。ASP Response.Write便捷語(yǔ)法在頁(yè)面處理的時(shí)候計算值,而ASP.NET數據綁定語(yǔ)法只在DataBind方法被調用的時(shí)候才計算值。

  DataBind是頁(yè)面和所有務(wù)器控件的一個(gè)方法。當你調用父控件的DataBind的時(shí)候,它會(huì )依次調用所有子控件的DataBind方法。例如,DataList1.DataBind()就會(huì )調用DataList模板中的所有控件的DataBind方法。調用頁(yè)面的DataBind方法--Page.DataBind() 或簡(jiǎn)單地調用 DataBind()--會(huì )引發(fā)頁(yè)面上所有的數據綁定表達式的計算操作。通常只在頁(yè)面的Page_Load事件中調用DataBind方法,如下面的例子所示。
在.aspx頁(yè)面的任何宣告式片斷中,你都可以使用綁定語(yǔ)法,并為它的估值指定運行時(shí)所期望的數據類(lèi)型。上面例子中的簡(jiǎn)單屬性、表達式和方法在被計算的時(shí)候會(huì )向用戶(hù)顯示文本內容。在這種情況下,數據綁定表達式的值是String類(lèi)型的。在上面的集合例子中,數據綁定語(yǔ)法的值的類(lèi)型是ListBox的DataSource屬性。你會(huì )發(fā)現在綁定表達式中強制轉換值的類(lèi)型對于生成期望的結果是必要的。例如,如果count是一個(gè)整數:

Number of Records: <%# count.ToString() %>

  ASP.NET數據綁定語(yǔ)法支持公共變量、頁(yè)面的屬性和頁(yè)面中其它控件的屬性的綁定。下面的例子演示了如何綁定到公共變量和頁(yè)面的簡(jiǎn)單屬性。請注意,在DataBind()被調用之前,這些值都已經(jīng)初始化過(guò)了。

<script language="VB" runat="server">
Sub Page_Load(sender As Object, e As EventArgs)
 Page.DataBind
End Sub

ReadOnly Property custID() As String
 Get
  Return "ALFKI"
 End Get
End Property

ReadOnly Property orderCount() As Integer
 Get
  Return 11
 End Get
End Property
</script>
<form action="DataBind1_vb.aspx" runat="server">
Customer: <b><%# custID %></b><br />
Open Orders: <b><%# orderCount %></b>
</form>

  下面的例子演示如何綁定到另一個(gè)控件的屬性:

<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"/>
  列表類(lèi)型的服務(wù)器控件(例如DropDownList、ListBox和HTMLSelect)把集合作為數據源。下面的例子演示如何綁定到通用語(yǔ)言運行時(shí)集合類(lèi)型。這些控件只能綁定到支持Ienumerable、Icollection或IlistSource接口的集合。更為常見(jiàn)的是,它可以綁定到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類(lèi)是在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

  通常情況下,你可能希望綁定到頁(yè)面或控件之前先處理數據。下面的例子演示了如何綁定到表達式和方法的返回值。

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頁(yè)面框架組件提供了一個(gè)靜態(tài)的方法,它估算延遲綁定(late-bound)的數據綁定表達式并可以選擇把其結果格式化為字符串。在這種情況下,DataBinder.Eval很方便,因為它消除了開(kāi)發(fā)者把估值轉會(huì )為期望的數據類(lèi)型所必須執行的很多顯式轉化工作。當模板化列表中有數據綁定控件的時(shí)候,它特別有用處,因為在那種情況下,通常數據行和數據字段都必須轉換。

  看看下面的例子,它需要把整數顯示為貨幣字符串。在標準的ASP.NET數據綁定語(yǔ)法中,你必須首先轉換數據行的類(lèi)型以檢索數據字段IntegerValue。接著(zhù)把它作為參數傳遞給String.Format方法。

<%# String.Format("{0:c}", (CType(Container.DataItem, DataRowView)("IntegerValue"))) %>

  這個(gè)語(yǔ)法很復雜并且不容易記住。與此形成對照的是,DataBinder.Eval是一個(gè)簡(jiǎn)單的方法,它只有三個(gè)參數:數據項的命名容器(naming container)、數據字段名稱(chēng)和格式化字符串。在模板化的控件(例如FormView、 GridView、DetailsView、DataList或Repeater)中,命名容器都是Container.DataItem。頁(yè)面(Page)是另一種命名容器,也可以用于DataBinder.Eval。前面我們提到,ASP.NET 2.0為DataBinder.Eval提供了一個(gè)新的簡(jiǎn)化的語(yǔ)法(Eval),你可以在數據綁定的控件模板中使用它來(lái)自動(dòng)解析Container.DataItem。

<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
<%# Eval("IntegerValue", "{0:c}") %>

  格式化字符串參數是可選的。如果省略了這個(gè)參數,DataBinder.Eval會(huì )返回Object類(lèi)型值,如下所示:

<%# CType(DataBinder.Eval(Container.DataItem, "BoolValue"), Boolean) %>

  我們要重點(diǎn)注意的是,與標準的數據綁定語(yǔ)法相比,DataBinder.Eval會(huì )明顯地影響性能,這是因為它使用了延遲綁定的反射(reflection)。請明智地使用DataBinder.Eval,特別是在不需要格式化字符串的情況下。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP.NET數據綁定
ASP.NET前臺代碼綁定后臺變量方法總結
[轉]C# Eval在asp.net中的用法及作用
關(guān)于A(yíng)SP.NET 數據綁定
ASP.NET 數據綁定概述
(轉)AspNetPager使用方法
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久