Joh*_*ams 2 vb.net asp.net data-binding eval page-title
我有一个绑定到ListView控件的SQLDataSource,但我想将绑定记录的一部分放入HTML TITLE属性.这是我想要更改的代码隐藏文件,因此可以使用Eval根据数据内容构建动态TITLE:
Public Partial Class zShowAd
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.Page.Title = " Dynamically set in ASPX page"
'how to use Eval here instead of the above constant ??
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
这是相应的.aspx文件:
<%@ Page Language="vb" AutoEventWireup="false" MasterPageFile="~/zSEO.master"
CodeBehind="zShowAd.aspx.vb" Inherits="Zipeee.zShowAd" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div>
<asp:ListView ID="ShowAd" runat="server" DataSourceID="aPosting">
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="itemPlaceholder"></asp:PlaceHolder>
</LayoutTemplate>
<ItemTemplate>
<div>
<div id="wrapper">
<div id="header"></div>
<div id="main">
<div id="nav"> AdID: <%#Eval("AdID")%></div>
<div id="extras">Price: <%#Eval("Price")%></div>
<div id="content"> <%#Eval("AdDesc")%></div>
</div>
<div id="footer"></div>
</div>
</div>
</ItemTemplate>
</asp:ListView>
<asp:sqldatasource runat="server" id="aPosting"
ConnectionString="<%$ ConnectionStrings:ZIPeeeConnectionString2 %>"
SelectCommand="spGetAdByID" SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:QueryStringParameter Name="AdId" QueryStringField="a" Type="String" />
</SelectParameters>
</asp:sqldatasource>
</div>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
您可以通过将以下内容放在ListView的ItemTemplate中来调用页面代码的方法(Sub):
<%# SetPageTitle(Eval("SomeProperty")) %>
Run Code Online (Sandbox Code Playgroud)
然后在你的代码后面(抱歉它在C#中):
protected void SetPageTitle(object title)
{
this.Title = title.ToString();
}
Run Code Online (Sandbox Code Playgroud)
或者,您也可以传递完整的数据项,而不只是一个属性:
<%# SetPageTitle(Container.DataItem) %>
Run Code Online (Sandbox Code Playgroud)
更新(回答你的评论):
<%# ... %>是一种所谓的数据绑定表达式.它只能在数据绑定控件(在您的示例中的ListView)内,它总是与当前记录(通常是要显示在像ListView中数据绑定控件的多个记录)的作品.
因此,在使用时<%# Eval("Price") %>,您将显示当前记录的"价格"列的值.如果您的查询,将返回多个记录,那么这将每个记录被执行,并设置页面标题时(如上图所示),该页面的标题是从最后一个记录的值.
另一方面<%= ... %>,它只是一个普通的服务器端代码片段(不知道它是否有特定的名称),它不知道数据绑定上下文(例如,哪个是当前记录).
有关更多详细信息,请参阅以下问题:何时应在ASP.NET控件中使用#和=?
| 归档时间: |
|
| 查看次数: |
10324 次 |
| 最近记录: |