用databinder.eval 綁定不必關心數據來源(dataread或dataset)。不必關心數據的類型eval會把這個數據對象轉換為一個字符串。在底層綁定做了很多工作,使用了反射性能。正因為使用方便了,但卻影響了數據性能。當于dataset綁定時,dataitem其實式一個datarowview(如果綁定的是一個數據讀取器(dataread)它就是一個idatarecord。)因此直接轉換成datarowview的話,將會給性能帶來很大提升。
使用時注意:1.注意字段名的大小寫(要特別注意)。如果和查詢的不一致,在某些情況下會導致比<%# databinder.eval(container.dataitem, "字段名") %>還要慢。2.如果想進一步提高速度,可采用<%# ((system.data.datarowview)container.dataitem)[0] %>的方法。不過其可讀性不高。
//以dataset做數據源時
//正常情況(c#)
<%# ((system.data.datarowview)container.dataitem)["title"] %>
//綁定日期字段格式字符串
<%# convert.todatetime(((system.data.datarowview)container.dataitem)
["fbtime"]).tostring("yyyy年mm月dd日") %>
<%# databinder.eval(container, "dataitem.fbtime","{0:yyyy年mm月dd日}") %>
//字符串綁定超過指定長度截斷
<%# databinder.eval(container.dataitem, "text").tostring().trim().length>7?
databinder.eval(container.dataitem, "text").tostring().trim().substring
(0,7):databinder.eval(container.dataitem, "text").tostring().trim() %>
//價格格試化為2位小數
<%# convert.todecimal(((system.data.datarowview)container.dataitem) ["price"]).tostring("f2") %>
<%# databinder.eval(container, "dataitem.price","{0:f2}") %>
'vb.net中價格格式化后判斷
<%# iif(databinder.eval(container.dataitem, "price","{0:f2}")="0.00","面議",databinder.eval(container.dataitem, "price","{0:f2}")+"萬") %>
'vb.net常規
<%# ctype(container.dataitem,datarowview).row("title") %>
新聞熱點
疑難解答
圖片精選