Wie man mit Eval im codebehind zur Seite gesetzt.Titel
Habe ich ein SQLDataSource-das ist gebunden an ein ListView-Steuerelement, aber ich will Platz, Teile des gebundenen Datensatz in der HTML-TITLE-Attribut. Hier ist meine codebehind-Datei, die ich ändern wollen, so kann es mit Eval zu konstruieren, die einen dynamischen TITEL auf der Grundlage der Daten Inhalt:
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
Hier ist die entsprechende .aspx-Datei:
<%@ 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>
InformationsquelleAutor John Adams | 2010-03-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie aufrufen einer Methode (Sub) von der Seite code-hinter, indem Sie das folgende irgendwo in der ItemTemplate Ihrer ListView:
Dann im code behind (sorry, es ist in C#):
Alternativ können Sie auch die vollständigen Daten posten, anstatt nur eine Eigenschaft:
Update (Antwort dein Kommentar):
<%# ... %>
ist eine sogenannte data-binding-Ausdruck. Es funktioniert nur innerhalb eines datengebundenen Steuerelement (ListView in deinem Beispiel) und es funktioniert immer mit dem aktuellen Datensatz (in der Regel Ihr display mehr als einen Datensatz in einem datengebundenen Steuerelement wie das ListView -).So, wenn Sie
<%# Eval("Price") %>
, zeigt den Wert des aktuellen Datensatzes "Preis" - Spalte. Wenn Ihre Abfrage zurückgeben würde, mehr als einen Datensatz, dann würde das ausgeführt werden für jeden Datensatz aus, und bei der Einstellung der Seiten-Titel (wie oben gezeigt), die Seite den Titel wäre der Wert aus dem letzten Datensatz.Auf der anderen Seite
<%= ... %>
ist nur ein normaler server-side-code-snippet (weiß nicht, ob es einen bestimmten Namen für Sie), die nicht weiß, über die data-binding-Kontext (z.B. der aktuelle Datensatz).Finden Sie in der folgenden Frage weitere details: Wann sollte ich verwenden # und = in ASP.NET Steuerelemente?
Ich versuchte zu erklären, den Unterschied in der Antwort aktualisiert.
Was für eine tolle Erklärung! Danke.
Schöne, ausführliche Erklärung. Die Abklärung der verschiedenen binding-Ausdrücke ist es hilfreich.
InformationsquelleAutor M4N