发布时间:2025-12-10 19:28:42 浏览次数:14
DataBinder.Eval 方法[通俗易懂]ONE一、DataBinder.Eval的基本格式在绑定数据时经常会用到这个句程序:<%#DataBinder.Eval(Container.DataItem,"xxxx")%>或者<%#DataBinder.Eval(Container,"DataItem.xxxx")%>今天又学到一种,而且微软也说这种方法的效率要比以上两种高。<%#((D...
ONE
一、DataBinder.Eval的基本格式
在绑定数据时经常会用到这个句程序:<%# DataBinder.Eval(Container.DataItem,”xxxx”)%>或者<%# DataBinder.Eval(Container,”DataItem.xxxx”)%>
今天又学到一种,而且微软也说这种方法的效率要比以上两种高。
<%# ((DataRowView)Container.DataItem)[“xxxx”]%>
很有用的,这样可以在前台页面做好多事情了。
还要记住要这样用必须要在前台页面导入名称空间System.Data,否则会生成错误信息。
<%@ Import namespace=”System.Data” %>
这种用法其实和<%# ((DictionaryEntry)Container.DataItem).Key%>是一个道理。
Text='<%# DataBinder.Eval(Container.DataItem, “字段”) %>’
这样的方法是最快的
Text='<%# GetPrice() %>’
也可以绑定方法,但方法要是public的
Text='<%# “CarDetails.aspx?CarID=” + DataBinder.Eval(Container.DataItem, “CarID”) %>’
还可以连接多个字段
关键是Container这个东西,它比较神秘。它的名称空间是System.ComponentModel。对于它我还需要进一步理解。
二、DataBinder.Eval实现判断选择
<asp:TemplateColumn HeaderText=”性别”>
<ItemTemplate>
<%# DGFormatSex(Convert.ToString(DataBinder.Eval(Container.DataItem,”xb”))) %>
</ItemTemplate>
</asp:TemplateColumn>
cs里定义DGFormatSex方法
protected string DGFormatSex(string xb)
{
if(xb == “1”)
return “男”;
else
return “女”;
}
DataBinder.Eval用法范例DataBinder.Eval用法范例
//显示二位小数
//<%# DataBinder.Eval(Container.DataItem, “UnitPrice”, “${0:F2}”) %>
//{0:G}代表显示True或False
//<ItemTemplate>
// <asp:Image Width=”12″ Height=”12″ Border=”0″ runat=”server”
// AlternateText='<%# DataBinder.Eval(Container.DataItem, “Discontinued”, “{0:G}”) %>’
// ImageUrl='<%# DataBinder.Eval(Container.DataItem, “Discontinued”, “~/images/{0:G}.gif”) %>’ />
// </ItemTemplate>
//转换类型
((string)DataBinder.Eval(Container, “DataItem.P_SHIP_TIME_SBM8”)).Substring(4,4)
{0:d} 日期只显示年月日
{0:yyyy-mm-dd} 按格式显示年月日
//显示二位小数
//<%# DataBinder.Eval(Container.DataItem, “UnitPrice”, “${0:F2}”) %>
//{0:G}代表显示True或False
//<ItemTemplate>
// <asp:Image Width=”12″ Height=”12″ Border=”0″ runat=”server”
// AlternateText='<%# DataBinder.Eval(Container.DataItem, “Discontinued”, “{0:G}”) %>’
// ImageUrl='<%# DataBinder.Eval(Container.DataItem, “Discontinued”, “~/images/{0:G}.gif”) %>’ />
// </ItemTemplate>
//转换类型
((string)DataBinder.Eval(Container, “DataItem.P_SHIP_TIME_SBM8”)).Substring(4,4)
{0:d}日期只显示年月日
{0:yyyy-mm-dd}按格式显示年月日
{0:c}货币样式
TWO
<%#Bind(“Subject”)%>//绑定字段
<%#Container.DataItemIndex+1%>//实现自动编号
<%#DataBinder.Eval(Container.DataItem,“[n]”)%>
通常使用的方法
<%#DataBinder.Eval(Container.DataItem,“ColumnName”)%>
<%#DataBinder.Eval(Container.DataItem,“ColumnName”,null)%>
<%#DataBinder.Eval(Container,“DataItem.ColumnName”,null)%>
其他用法
<%#((DataRowView)Container.DataItem)[“ColumnName”]%>
<%#((DataRowView)Container.DataItem).Row[“ColumnName”]%>
<%#((DataRowView)Container.DataItem)[“adtitle”]%>
<%#((DataRowView)Container.DataItem)[n]%>
<%#((DbDataRecord)Container.DataItem)[0]%>
<%#(((自定义类型)Container.DataItem)).属性.ToString()%>//如果属性为字符串类型就不用ToString()了
DataBinder.Eval用法范例
<%#DataBinder.Eval(Container.DataItem,“IntegerValue”,“{0:c}”)%>
格式化字符串参数是可选的。如果忽略参数,DataBinder.Eval返回对象类型的值,
//显示二位小数
<%#DataBinder.Eval(Container.DataItem,“UnitPrice”,“${0:F2}”)%>
//{0:G}代表显示True或False
<ItemTemplate>
<asp:ImageWidth=”12″Height=”12″Border=”0″runat=”server”
AlternateText='<%#DataBinder.Eval(Container.DataItem,“Discontinued”,“{0:G}”)%>’
ImageUrl='<%#DataBinder.Eval(Container.DataItem,“Discontinued”,“~/images/{0:G}.gif”)%>’/>
</ItemTemplate>
//转换类型
((string)DataBinder.Eval(Container,“DataItem.P_SHIP_TIME_SBM8”)).Substring(4,4)
{0:d}日期只显示年月日
{0:yyyy-mm-dd}按格式显示年月日
{0:c}货币样式
<%#Container.DataItem(“price”,”{0:¥#,##0.00}”)%>
<%#DataBinder.Eval(Container.DataItem,”Company_Ureg_Date”,”{0:yyyy-M-d}”)%>
SpecifierTypeFormatOutput(PassedDouble1.42)Output(PassedInt-12400)
cCurrency{0:c}$1.42-$12,400
dDecimal{0:d}System.FormatException-12400
eScientific{0:e}1.420000e+000-1.240000e+004
fFixedpoint{0:f}1.42-12400.00
gGeneral{0:g}1.42-12400
nNumberwithcommasforthousands{0:n}1.42-12,400
rRoundtrippable{0:r}1.42System.FormatException
xHexadecimal{0:x4}System.FormatExceptioncf90
{0:d}日期只显示年月日
{0:yyyy-mm-dd}按格式显示年月日
样式取决于Web.config中的设置
{0:c}或{0:£0,000.00}货币样式标准英国货币样式
<system.web>
<globalizationrequestEncoding=”utf-8″responseEncoding=”utf-8″culture=”en-US”uiCulture=”en-US”/>
</system.web>
显示为£3,000.10
{0:c}或string.Format(“{0:C}”,price);中国货币样式
<system.web>
<globalizationrequestEncoding=”utf-8″responseEncoding=”utf-8″culture=”zh-cn”uiCulture=”zh-cn”/>
</system.web>
显示为¥3,000.10
{0:c}或string.Format(“{0:C}”,price);美国货币样式
<system.web>
<globalizationrequestEncoding=”utf-8″responseEncoding=”utf-8″/>
</system.web>
显示为$3,000.10
DataBinder.Eval(Container.DataItem,”Name”)和Container.DataItem(“Name”)有什么区别?
DataBinder是System.Web里面的一个静态类,它提供了Eval方法用于简化数据绑定表达式的编写,但是它使用的方式是通过Reflection等开销比较大的方法来达到易用性,因此其性能并不是最好的。而Container则根本不是任何一个静态的对象或方法,它是ASP.NET页面编译器在数据绑定事件处理程序内部声明的局部变量,其类型是可以进行数据绑定的控件的数据容器类型(如在Repeater内部的数据绑定容器叫RepeaterItem),在这些容器类中基本都有DataItem属性,因此你可以写Container.DataItem,这个属性返回的是你正在被绑定的数据源中的那个数据项。如果你的数据源是DataTable,则这个数据项的类型实际是DataRowView。
转载于:https://www.cnblogs.com/weiqt/articles/2002972.html