程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 數據控件與業務實體之間的綁定小結

數據控件與業務實體之間的綁定小結

編輯:.NET實例教程

數據控件與業務實體之間的綁定小結
Author:Denny
Date:12/14/2007
數據綁定Eval方法VS數據綁定Bind方法
<%# Eval(“ProductID”) %>
<%# Bind(“ProductID”)%>
Eval:單向綁定,數據只讀
Bind:雙向綁定,可讀可執行Insert/Update/…..操作
詳細介紹:在ASP.Net的數據綁定的控件中,如GridView, DetailsView, 以及FormVIEw這些控件能夠自動對數據源進行Update, Delete 和 Insert操作。
if you have defined SQL Select, Insert, Delete, and Update statements for your data source control, using Bind in a GridVIEw, DetailsVIEw, or FormVIEw control template enables the control to extract values from child controls in the template and pass them to the data source control. The data source control in turn performs the appropriate command for the database.
由於以上原因,所以Bind方法通常用在數據控件中的EditItemTemplate或InsertItemTemplate模板中。
Demo:
<EditItemTemplate>
 <table>
    <tr>
      <td align=right>
        <b>Employee ID:</b>
      </td>
      <td>
        <%# Eval("EmployeeID") %>
      </td>
    </tr>
    <tr>
      <td align=right>
        <b>First Name:</b>
      </td>
      <td>
        <ASP:TextBox ID="EditFirstNameTextBox" RunAt="Server"
          Text=''<%# Bind("FirstName") %>'' />
      </td>
&nb

$False$

sp;   </tr>
    <tr>
      <td align=right>
        <b>Last Name:</b>
      </td>
      <td>
        <ASP:TextBox ID="EditLastNameTextBox" RunAt="Server"
            Text=''<%# Bind("LastName") %>'' />
      </td>
    </tr>
    <tr>
      <td colspan="2">
        <ASP:LinkButton ID="UpdateButton" RunAt="server"
          Text="Update" CommandName="Update" />
        &nbsp;
        <ASP:LinkButton ID="CancelUpdateButton" RunAt="server"
          Text="Cancel" CommandName="Cancel" />
      </td>
    </tr>
 </table>
</EditItemTemplate>
當點擊某行的Update按鈕時,被Bind方法綁定的TextBox值就會被傳入到數據源控件中進行更新操作。
與簡單的業務實體屬性綁定
簡單業務實體:
Class CArtwork
{
        //公共屬性
        Public int ID {…}
        Public string Title {….}
        Public string Owner {….}
        Public DateTime DateCompleted {…}
        Public bool IsRecommend {…}


       …..
}
使用Eval和Bind 方法可以直接與實體的公共屬性進行綁定,若私有或受保護的則不能進行綁定。
Demo:
<asp:Label ID=”labTitle” runat=”server” Text=’<%# Eval(“Title”)%>’ ></ASP:Label>
<asp:Label ID=”labOwner” runat=”server” Text=’<%# Bind(“Owner”) %>’ ></ASP:Label>
作為變量進行數據綁定
這種情況主要用在QueryString中,或則應用在需要對字段進行格式化顯示。
a)         控件屬性中之綁定一個數據字段
Demo:
<asp:HyperLink ID=”hpl” runat=”server” Text=’<%# Eval(“Title”)%>’ NavigateUrl=’<%# Bind(“ID”,”Artwork.aspx?id={0}”)%>’ ></ASP:HyperLink>
b)        日期綁定時的格式化
Demo:
<asp:Label ID=”labDate” runat=”server” Text=’<%# Bind(“DateCompleted”,”{0:yyyy-MM-dd}”)%>’ ></ASP:Label>
c)         兩個業務實體的屬性同時綁定到一個字符串
Demo:
<asp:HyperLink ID=”hpl” runat=”server” Text=’<%# Bind(“Title”)%>’ NavigateUrl=’<%# string.Format(“~/Spaces/{0}/artwork/{1}.aspx”, Eval(“Owner”), Eval(“ID”))%>’ ></ASP:HyperLink>
注意,這裡數據綁定方法只能是Eval,不能使用Bind方法。原因:(了解中)
綁定新聞標題,只顯示標題的前幾個字符
這種情況在新聞中應用的最常見,主要是為了在顯示時,頁面樣式要保持一致,防止標題過長而在顯示數據的時候,破環頁面整體的布局。
Demo:
<asp:HyperLink ID=”hplTitle” runat=”server&rdquo; ToolTip=’<%# Bind(“Title”)%>’ NavigateUrl=’<%# DataBinder.Eval(Container.DataItem,”Title”).ToString().Length > 10 ? DataBinder.Eval(Container.DataItem,”Title”).ToString().Substring(0,10) : DataBinder.Eval(Container.DataItem,”Title”).ToString()%>’ ></ASP:HyperLink>
與復雜的業務實體進行綁定
復雜業務實體
Class CArtist
{
        //公共屬性
        Public string ID {…}
        Public string Name {…}
        //包含成員類屬性
        Public CArtwork Artwork {…}
        …….
}
若要綁定CArtist對象中CArtwork屬性中的Title進行綁定,則可以使用下面的綁定方式:
<asp:Label ID=”labTitle” runat=”server” Text=’<%# DataBinder.Eval(Container.DataItem,”Artwork.Title”)%>’></ASP:Label>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved