1.可以將數(shù)據(jù)綁定表達(dá)式包含在服務(wù)器控件或者普通的html元素的開(kāi)始標(biāo)記中屬性名/屬性值對(duì)的值側(cè)。
2.數(shù)據(jù)綁定綁定表達(dá)式包含在在頁(yè)面中的任何位置。
3.可以將數(shù)據(jù)綁定表達(dá)式包含在Javascript代碼中,從而實(shí)現(xiàn)在Javascript中調(diào)用C#或者VB.NET的方法。
數(shù)據(jù)綁定表達(dá)式必須包含在<%#和%>字符之間。格式如下:
以下為引用的內(nèi)容: <tagprefix:tagnameproperty='<%#data-bindingexpression%>'runat="server"/> |
或者如下:此時(shí)只需要把屬性DataSource='<%# 數(shù)組名%>'。
4.可以是一個(gè)表達(dá)式
例如:Person是一個(gè)對(duì)象,Name和City是它的2個(gè)屬性,則數(shù)據(jù)綁定表達(dá)式可以這樣寫:
以下為引用的內(nèi)容: <%#(Person.Name + " " + Person.City)%> |
5.可以是一個(gè)方法
例如:<%#GetUserName()%>。GetUserName()是一個(gè)已經(jīng)定義的C#方法,一般要求有返回值。
6,可以是用Eval,DateBind.Eval取得的數(shù)據(jù)表的字段,這個(gè)是最常見(jiàn)的了,不再舉例。
注意:如果數(shù)據(jù)綁定表達(dá)式作為屬性的值,只要數(shù)據(jù)綁定表達(dá)式中沒(méi)有出現(xiàn)雙引號(hào),那么<%#數(shù)據(jù)綁定表達(dá)式%>的最外層用雙引號(hào)或者單引號(hào)都可以。如果數(shù)據(jù)綁定表達(dá)式中出現(xiàn)雙引號(hào),則<%#數(shù)據(jù)綁定表達(dá)式%>的最外層最好要用單引號(hào)。
與數(shù)據(jù)庫(kù)有關(guān)的數(shù)據(jù)綁定表達(dá)式的常用方法?
以下為引用的內(nèi)容: <%#DataBind.Eval(Container.DataItem,"字段名")%> <%#DataBind.Eval(Container.DataItem,"字段名","{0:c}")%> |
還有2種不常用的:
以下為引用的內(nèi)容: <%# DataBinder.Eval(Container,"DataItem.字段名")%> <%# DataBinder.Eval(Container,"DataItem.字段名",{0:c})%> |
Container.DataItem相當(dāng)于數(shù)據(jù)庫(kù)中某個(gè)表中的一行記錄,而一行可以有很多列。
最后一個(gè)參數(shù)和 String.Format的形式一樣。例如c代表貨幣,p代表百分號(hào),d代表短日期格式顯示,f代表浮點(diǎn)數(shù)現(xiàn)實(shí),f3代表小數(shù)點(diǎn)后三為,一次類推。
使用三目運(yùn)算符?:的例子:
以下為引用的內(nèi)容: <%#DataBinder.Eval(Container.DataItem,"字段名").ToString().Trim().Length>16?DataBinder.Eval(Container.DataItem,"字段名").ToString().Trim().Substring(0,16):DataBinder.Eval(Container.DataItem,"字段名").ToString().Trim()%> |
以下為引用的內(nèi)容: <%#Eval("字段名")%> <%#Eval("字段名","{0:c}")%> |
.NET 2.0新出現(xiàn)的一個(gè)方法。和DataBind.Eval()等價(jià)。
最后一個(gè)參數(shù)和 String.Format的形式一樣。例如c代表貨幣,p代表百分號(hào),d代表短日期格式顯示,f代表浮點(diǎn)數(shù)現(xiàn)實(shí),f3代表小數(shù)點(diǎn)后三位,一次類推。
使用三目運(yùn)算符的例子:
以下為引用的內(nèi)容: <%#(Eval("性別")).ToString() =="True"?"男":"女"%> |
性別字段類型為:是/否(Access),bit(sql server)
使用方法調(diào)用的例子:
以下為引用的內(nèi)容: <%# GetUserPhoto(Eval("PhotoPath")) %> |
GetUserPhoto()的定義:
以下為引用的內(nèi)容: <%#((DataRowView)Container.DataItem)["字段名"] %> <%# string.Format("{0:c}", ((DataRowView)Container.DataItem)["字段名"])%> |
用String.Format方法設(shè)定字段的顯示樣式。例如c代表貨幣,p代表百分號(hào),d代表短日期格式顯示,f代表浮點(diǎn)數(shù)現(xiàn)實(shí),f3代表小數(shù)點(diǎn)后三為,一次類推。
類型轉(zhuǎn)換例子:<%# (int)((DataRowView)Container.DataItem)["字段名1"]*(int)((DataRowView)Container.DataItem)["字段名2"]%> 意思是2個(gè)字節(jié)相乘。
上面三種綁定方法的效率:Eval方法執(zhí)行時(shí)候會(huì)調(diào)用DataBinder.Eval方法,DataBinder.Eval方法在運(yùn)行時(shí)使用反射執(zhí)行后期綁定計(jì)算,會(huì)導(dǎo)致性能明顯下降。所以會(huì)導(dǎo)致性能明顯下降。所以三者中<%#((DataRowView)Container.DataItem)["字段名"] %>的性能最好。
以下為引用的內(nèi)容: <%#data-bindingexpression%> |