Asp.Net 之 前臺綁定經常使用總結

一、<%= 變量名 %> 裏面放的是後臺定義的變量名,如:javascript

<div>  
    <p> <%= DateTime.Now.ToString() %></p> 
</div>

輸出結果爲:2015-03-09 11:20:08
二、 <%# %> 數據的綁定(注:只能用在數據綁定控件且爲服務器控件中)java

      此格式是asp.net下特有的,它是控件數據綁定的語法,且必需要調用該控件的DataBind()方法才執行(或者整個頁面Page.DataBind()也就是對所得控件都調用DataBind()方法)。數據庫

如:<%# DataBinder.(Container.DataItem, "ClassName") %>
完整實例代碼: 
服務器

<asp:DataList ID="ClassList" runat="server"> 
    <ItemTemplate> 
<%# DataBinder.(Container.DataItem, "ClassName") %> </ItemTemplate> </asp:DataList>
(1)<%#Eval("數據列")%>  主要用於須要進行更改的數據列

如:我須要將<%#Eval("性別")%> =1 ;將1轉換成女。asp.net

首先在.CS文件中定義一個方法:函數

/// <summary>         
/// 轉換性別         
/// </summary>                
public object ChangeSex(object obj)         
{             
    if (obj.ToString() == "0")             
    {                 return "";             }            
     else             
    {                 return "";             }         
}

則,<%# ChangeSex(Eval("性別"))%> 輸出爲 " 女 "性能

能夠把這些公共的轉換方法所有放到一個公共類文件中,進行調用之。調用方法爲:spa

<%# 命名間.公共類名.方法名("列")%>.net

 <%# Common.ChangeSex(Eval("性別"))%>雙向綁定

也能夠進行時間截取

如1: <%# Eval("StartTime", "{0:yyyy-MM-dd}")%>

或者2: <%# Convert.ToDateTime(Eval("StartTime").ToString()).ToString("yyyy-MM-dd")%>

(2)<%# Bind("數據列")%>

常見於GridView中的不須要進行處理的數據列綁定。

(3)Eval和Bind的區別

[1]綁定表達式 <%# Eval("字段名") %>             <%# Bind("字段名") %>

1).eval是隻讀數據,bind是可更新的.

2).當對需格式化操做的表達式操做時候,必須用Eval 如<%# Eval("字段名").ToString().Trim() %>

3).若GridView中綁定列裏面 設置 內容格式 DataFormateString ={0:d} ,則 必須把 屬性 HtmlCode 設置爲false,不然沒法 起做用;

4).Eval 單向綁定:數據是隻讀的 ;Bind 雙向綁定:數據能夠更改,並返回服務器端,服務器能夠處理更改後的數據,如存入數據庫.

[2]、詳細介紹
      eval()方法在運行時使用反射執行後期綁定計算,所以與標準的ASP.NET數據綁定方法bind相比,會致使性能明顯降低。它通常用在綁定時須要格式化字符串的狀況下。多數狀況儘可能少用此方法 Eval 方法是靜態(只讀)方法,該方法採用數據字段的值做爲參數並將其做爲字符串返回。
      Bind 方法支持讀/寫功能,能夠檢索數據綁定控件的值並將任何更改提交回數據庫。
      使用 Eval 方法  Eval 方法可計算數據綁定控件(如 GridView、DetailsView 和 FormView 控件)的模板中的後期綁定數據表達式。在運行時,Eval 方法調用 DataBinder 對象的 Eval 方法,同時引用命名容器的當前數據項。命名容器一般是包含完整記錄的數據綁定控件的最小組成部分,如 GridView 控件中的一行。所以,只能對數據綁定控件的模板內的綁定使用 Eval 方法。 Eval 方法以數據字段的名稱做爲參數,從數據源的當前記錄返回一個包含該字段值的字符串。能夠提供第二個參數來指定返回字符串的格式,該參數爲可選參數。字符串格式參數使用爲 String 類的 Format 方法定義的語法。
      使用 Bind 方法  Bind 方法與 Eval 方法有一些類似之處,但也存在很大的差別。雖然能夠像使用 Eval 方法同樣使用 Bind 方法來檢索數據綁定字段的值,但當數據能夠被修改時,仍是要使用 Bind 方法。   在 ASP.NET 中,數據綁定控件(如 GridView、DetailsView 和 FormView 控件)可自動使用數據源控件的更新、刪除和插入操做。例如,若是已爲數據源控件定義了 SQL Select、Insert、Delete 和 Update 語句,則經過使用 GridView、DetailsView 或 FormView 控件模板中的 Bind 方法,就可使控件從模板中的子控件中提取值,並將這些值傳遞給數據源控件。而後數據源控件將執行適當的數據庫命令。出於這個緣由,在數據綁定控件的 EditItemTemplate 或 InsertItemTemplate 中要使用 Bind 函數。 Bind 方法一般與輸入控件一塊兒使用,例如由編輯模式中的 GridView 行所呈現的 TextBox 控件。當數據綁定控件將這些輸入控件做爲自身呈現的一部分建立時,該方法即可提取輸入值。  
Bind 方法採用數據字段的名稱做爲參數,從而與綁定屬性關聯,以下面的示例所示:
<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> 
     </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" /> 
           
         <asp:LinkButton ID="CancelUpdateButton" RunAt="server" 
           Text="Cancel" CommandName="Cancel" /> 
       </td> 
     </tr> 
   </table> 
</EditItemTemplate>

      單擊行的 Update 按鈕時,使用 Bind 語法綁定的每一個控件屬性值都會被提取出來,並傳遞給數據源控件以執行更新操做。

      使用 DataBinder.Eval  ASP.NET 提供了一個名爲 DataBinder.Eval 的靜態方法,該方法計算後期綁定的數據綁定表達式,並將結果格式化爲字符串(可選)。利用此方法,能夠避免許多在將值強制爲所需數據類型時必須執行的顯式強制轉換操做。

例如,在下面的代碼片斷中,一個整數顯示爲貨幣字符串。使用標準的 ASP.NET 數據綁定語法,必須首先強制轉換數據行的類型以便檢索數據字段 IntegerValue。而後,這將做爲參數傳遞到 String.Format 方法:

<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %> 
將此語法與 DataBinder.Eval 的語法進行比較,後者只有三個參數:數據項的命名容器、數據字段名稱和格式字符串。在模板化列表中(如 DataList 類、DataGrid 類或 Repeater 類),命名容器始終是 Container.DataItem。
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
格式字符串參數是可選的。若是它被忽略,DataBinder.Eval 將返回類型對象的值,以下面的示例所示:
<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>
當對模板化列表中的控件進行數據綁定時,DataBinder.Eval 特別有用,由於數據行和數據字段一般都必須強制轉換。
[3].其它
 Eval:綁定的是隻讀數據的顯示;Bind:能夠綁定只讀數據也能夠綁定更新數據,Bind方法還把字段和控件的綁定屬性聯繫起來,使得數據控件(好比GridView等)的Update、Insert和Delete等方法可使用這種聯繫來做出相應的處理。

Eval 和 Bind綁定的數據在<%# %> 顯示, 若對要顯示的數據做修改或者操做也在<%# %> 中,例如:

1)對顯示的字符串做字符顯示:<%# (Eval("Address")).ToString().SubString(0,10)%>,顯示10位數的地址。

2)對顯示的信息做判斷:<%# (Eval("if_delete")).ToString == "yes" ?"已刪除":"未刪除"%>

三、<%@ %> 表示:引用
如在不少.aspx頁面中,均可以看到以下的代碼:

<%@ Page Language="C#"   CodeFile="Default.aspx.cs" Inherits="_Default" %>

四、<% 函數 %>中間通常放函數或者方法,典型的asp程序寫法。
例如:

<tr bgcolor="#ffffff"> 
    <td height="20"> 
        <div align="center">種類</div> 
    </td> 
    <td height="9">  
        <% getTypeList(); %> 
    </td> 
</tr>
<script type="text/javascript">
function getTypeList(){}
</
script>
相關文章
相關標籤/搜索