.NET基礎之資料繫結

來源:互聯網
上載者:User

<%#name%>:將name綁定到該屬性;
1.簡單資料繫結
在頁面原始碼中添加一個Label控制項,將頁面的Name屬性綁定到該控制項上
<asp:Label ID="Label1" runat="server" Text=<%#Name %>></asp:Label>

簡單屬性綁定
//cs代碼:
//設定一個Name屬性,可以綁定的屬性必須有get

public string Name
{
    get

    {
       return "姓名"
;
    }

}
protected void Page_Load(object sender, EventArgs e)
{
    //將資料來源綁定到控制項

    Page.DataBind();        
}

2.運算式的綁定
在頁面原始碼上添加兩個TextBox控制項,一個Label控制項,將兩個TextBox的值相乘後顯示在Label上
<asp:TextBox ID="TextBox1" runat="server">0</asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server">0</asp:TextBox>
//Decimal 表示十進位數,Decimal 類型不會消除對舍入的需要,而是將因舍入而導致的錯誤降到最少
<asp:Label ID="Label1" runat="server" Text=<%#"總數為:"+Convert.ToString(Convert.ToDecimal(TextBox1.Text)*Convert.ToDecimal(TextBox2.Text)) %>></asp:Label>
頁面cs代碼:Page.DataBind(); 如果希望頁面初始及綁定,就放在Page_Load中,如果希望點擊按鈕計算,就放在Button的Click事件中。

3.方法的綁定
在頁面原始碼中直接調用cs代碼中的方法
在頁面原始碼上添加兩個TextBox控制項,一個Label控制項,將兩個TextBox的值相乘後顯示在Label上
<asp:TextBox ID="TextBox1" runat="server">0</asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server">0</asp:TextBox>
//Decimal 表示十進位數,Decimal 類型不會消除對舍入的需要,而是將因舍入而導致的錯誤降到最少
<asp:Label ID="Label1" runat="server" Text=<%#text()%>></asp:Label>
頁面cs代碼:Page.DataBind();如果希望頁面初始及綁定,就放在Page_Load中,如果希望點擊按鈕計算,就放在Button的Click事件中。

public string text()
{
    double num1 = Convert.ToDouble(TextBox1.Text);
    double num2 = Convert.ToDouble(TextBox2.Text);
     return ("總數為:"+(num1 * num2).ToString());
}

也可以使用JavaScript綁定到方法。
頁面原始碼:
<input id="Button1" type="button" value="button" onclick="Button1_onclick()" />

Code
<script language ="javascript" type="text/javascript">
    function Button1_onclick()
    {
       var a; 
       a = ''; 
       a='<%#text()%>'         //調用c#的方法,此方法見上段
       alert(a);
    }
    </script> 

4.Eval( " ")和DataBinder.Eval( Container.DataItem,"FileName")區別

DataBinder:資料繫結管理器
Eval:求值
Container:被綁定到的容器,比如GridView,DataList等
DataItem:容器的資料項目,包括項、交替模板行
FileName:綁定到容器的欄位(來自資料庫表欄位)

  • Eval只能在資料繫結控制項的模板中使用,而不能用於Page(頁面)層
     ASP.NET 2.0改善了模板中的資料繫結操作,把v1.x中的資料繫結文法DataBinder.Eval(Container.DataItem, fieldname)簡化為Eval(fieldname)。Eval方法與DataBinder.Eval一樣可以接受一個可選的格式化字串參數。縮短的Eval文法與DataBinder.Eval的不同點在於,Eval會根據最近的容器物件(例如DataListItem)的DataItem屬性來自動地解析欄位,而DataBinder.Eval需要使用參數來指定容器。ASP.NET 2.0頁面中仍然支援DataBinder.Eval,你可以在不支援簡化的Eval文法的環境中使用它。
  • span style="color: #ff0000">雙向繫結和單向綁定的區別
    Eval 函數用於定義單向(唯讀)綁定。
    Bind 函數用於定義雙向(可更新)綁定。
    簡單說就是Eval只能讀資料,不能更新。Bind 既能讀又能更新。 Bind 方法通常與輸入控制項一起使用,例如由編輯模式中的 GridView 行所呈現的 TextBox 控制項。當資料繫結控制項將這些輸入控制項作為自身呈現的一部分建立時,該方法便可提取輸入值。
5.格式化綁定資料
最後一個參數和
<%#DataBinder.Eval(Container.DataItem,"欄位名","{0:c}") %>
<%#Eval("欄位名","{0:c}")%>
<%#((DataRowView)Container.DataItem)["欄位名"] %>
以下三種寫法同等
<%#string.Format("{0:yyyy-MM-dd dddd}",Eval("stuBirth"))%>
<%# DataBinder.Eval(Container.DataItem,"stuBirth","{0:yyyy-MM-dd}")%>

<%#((DataRowView)Container.DataItem)["stuBirth"] %>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.