<%#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"] %>