📄 webdatabinding.aspx
字号:
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind4.src"
Icon="/quickstart/aspplus/images/databind4.gif"
Caption="C# DataBind4.aspx"
runat="server" />
</CsTemplate>
<VbTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/VB/DataBind4.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind4.src"
Icon="/quickstart/aspplus/images/databind4.gif"
Caption="VB DataBind4.aspx"
runat="server" />
</VbTemplate>
<JsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/JS/DataBind4.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind4.src"
Icon="/quickstart/aspplus/images/databind4.gif"
Caption="JScript DataBind4.aspx"
runat="server" />
</JsTemplate>
</Acme:LangSwitch>
<p>下面的示例说明如何绑定到 <b>Hashtable</b>。
<p>
<!-- Databinding to a Hashtable -->
<Acme:LangSwitch runat="server">
<CsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/CS/DataBind5.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind5.src"
Icon="/quickstart/aspplus/images/databind5.gif"
Caption="C# DataBind5.aspx"
runat="server" />
</CsTemplate>
<VbTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/VB/DataBind5.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind5.src"
Icon="/quickstart/aspplus/images/databind5.gif"
Caption="VB DataBind5.aspx"
runat="server" />
</VbTemplate>
<JsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/JS/DataBind5.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind5.src"
Icon="/quickstart/aspplus/images/databind5.gif"
Caption="JScript DataBind5.aspx"
runat="server" />
</JsTemplate>
</Acme:LangSwitch>
<!--BEGIN SECTION--> <br> <a name="expressions"><br> <span class="subhead">绑定表达式或方法</span>
<p>通常需要在绑定到页或控件之前操作数据。下面的示例说明如何绑定到表达式和方法的返回值。
<p>
<!-- Databinding to the return value of a function -->
<Acme:LangSwitch runat="server">
<CsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/CS/DataBind6.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind6.src"
Icon="/quickstart/aspplus/images/databind7.gif"
Caption="C# DataBind6.aspx"
runat="server" />
</CsTemplate>
<VbTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/VB/DataBind6.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind6.src"
Icon="/quickstart/aspplus/images/databind7.gif"
Caption="VB DataBind6.aspx"
runat="server" />
</VbTemplate>
<JsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/JS/DataBind6.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind6.src"
Icon="/quickstart/aspplus/images/databind7.gif"
Caption="JScript DataBind6.aspx"
runat="server" />
</JsTemplate>
</Acme:LangSwitch>
<!--BEGIN SECTION--> <br> <a name="bindereval"><br> <span class="subhead">DataBinder.Eval</span>
<p>ASP.NET 框架提供了一种静态方法,计算后期绑定的数据绑定表达式并且可选择将结果格式化为字符串。<b>DataBinder.Eval</b> 很方便,因为它消除了开发人员为强迫将值转换为所需的数据类型而必须做的许多显式转换。这在数据绑定模板列表内的控件时尤其有用,因为通常数据行和数据字段的类型都必须转换。
<p>请看下面的示例,本例中整数将显示为货币字符串。使用标准的 ASP.NET 数据绑定语法,必须首先转换数据行的类型以便检索数据字段 <code>IntegerValue</code>。下一步,将此作为参数传递给 <b>String.Format</b> 方法。
<p><Acme:TabControl runat="server">
<Tab Name="C#">
<%# String.Format("{0:c}", ((DataRowView)Container.DataItem)["IntegerValue"]) %>
</Tab>
<Tab Name="VB">
<%# String.Format("{0:c}", (CType(Container.DataItem, DataRowView)("IntegerValue"))) %>
</Tab>
<Tab Name="JScript">
<%# String.Format("{0:c}", (DataRowView(Container.DataItem))["IntegerValue"]) %>
</Tab>
</Acme:TabControl><p>
<p>该语法可能比较复杂,难以记忆。相反,<b>DataBinder.Eval</b> 只是一个具有三个参数的方法:数据项的命名容器、数据字段名和格式字符串。在像 <b>DataList</b>、<b>DataGrid</b> 或 <b>Repeater</b> 这样的模板列表中,命名容器始终是 <code>Container.DataItem</code>。<b>Page</b> 是另一个可与 <b>DataBinder.Eval</b> 一起使用的命名容器。<p>
<p><Acme:TabControl runat="server">
<Tab Name="C#">
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
</Tab>
<Tab Name="VB">
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
</Tab>
<Tab Name="JScript">
<%# DataBinder.Eval(Container.DataItem, "IntegerValue", "{0:c}") %>
</Tab>
</Acme:TabControl><p>
<p>格式字符串参数是可选的。如果省略它,则 <b>DataBinder.Eval</b> 返回对象类型的值,如下例所示。<p>
<p><Acme:TabControl runat="server">
<Tab Name="C#">
<%# (bool)DataBinder.Eval(Container.DataItem, "BoolValue") %>
</Tab>
<Tab Name="VB">
<%# CType(DataBinder.Eval(Container.DataItem, "BoolValue"), Boolean) %>
</Tab>
<Tab Name="JScript">
<%# Boolean(DataBinder.Eval(Container.DataItem, "BoolValue")) %>
</Tab>
</Acme:TabControl><p>
<p><b>DataBinder.Eval</b> 会对标准数据绑定语法带来很明显的性能损失,因为它使用后期绑定反射,注意这一点很重要。使用 <b>DataBinder.Eval</b> 时需谨慎,尤其是在不需要字符串格式化时。
<p>
<!-- Databinding in a templated list -->
<Acme:LangSwitch runat="server">
<CsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/CS/DataBind7.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind7.src"
Icon="/quickstart/aspplus/images/databind6.gif"
Caption="C# DataBind7.aspx"
runat="server" />
</CsTemplate>
<VbTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/VB/DataBind7.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind7.src"
Icon="/quickstart/aspplus/images/databind6.gif"
Caption="VB DataBind7.aspx"
runat="server" />
</VbTemplate>
<JsTemplate>
<Acme:SourceRef
RunSample="/quickstart/aspplus/samples/webforms/DataBind/JS/DataBind7.aspx"
ViewSource="/quickstart/aspplus/samples/webforms/DataBind/DataBind7.src"
Icon="/quickstart/aspplus/images/databind6.gif"
Caption="JScript DataBind7.aspx"
runat="server" />
</JsTemplate>
</Acme:LangSwitch>
<p>
<!--BEGIN SECTION--> <a name="endofsection">
<h4>本节小结</h4>
<ol>
<li>ASP.NET 声明性数据绑定语法使用 <%# %> 表示法。
<li>可以绑定到数据源、页或其他控件的属性、集合、表达式以及从方法调用返回的结果。
<li>列表控件可以绑定到支持 <b>ICollection</b>、<b>IEnumerable</b> 或 <b>IListSource</b> 接口的集合,如 <b>ArrayList</b>、<b>Hashtable</b>、<b>DataView</b> 和 <b>DataReader</b>。
<li><b>DataBinder.Eval</b> 是用于晚期绑定的静态方法。它的语法可能比标准数据绑定语法简单,但性能较低。
</ol>
<p>
<!-- #include virtual="/quickstart/aspplus/include/footer.inc" -->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -