2013-12-14 18 views
-2

FormViewTitle如果在ListView或FormView控件(ASP.NET)中有一個標籤元素,您將更新頁面標題,該標籤元素將根據您檢索的數據而改變。例如書的標題。控件將在頁面生成後檢索標題。我的問題是,有沒有辦法在頁面呈現後更新頁面標題,或者以某種方式將此信息傳遞給LabelTitle(ID)值的Page.Title?如何從動態填充的FormView控件更新Web窗體中的頁面標題?

請幫忙!

這是我的代碼簡化

<asp:FormView ID="FormViewTitle" 
      Runat="server" 
      DataSourceID="XmlDataSourceTitle" 
      AllowPaging="False"> 
     <ItemTemplate>       
      <asp:Label ID="LabelTitle" runat="server" Text=""> 
       <%#Eval("name") %> 
       </asp:Label> 
     </ItemTemplate> 
     </asp:FormView> 
    <asp:XmlDataSource ID="XmlDataSourceTitle" 
       DataFile="BooksTitles.xml" 
       TransformFile ="TransformRSS.xslt">     
    </asp:XmlDataSource> 

到目前爲止,我已經做到了這一點(在後面的代碼)訪問FormView控件,但不工作:

if (FormViewTitle.CurrentMode == FormViewMode.ReadOnly)   
{ 
    Label pt = (Label)FormViewTitle.FindControl("LabelTitle"); 
    this.Page.Title = pt.Text; 
} 

回答

1

在變化事件在你的代碼頁面後面你可以試試這個:

Page.Title = "Change Book Title"; 
+0

不,這是行不通的那樣。那會很簡單。請記住,標題是在生成頁面後從數據庫或XML文件中檢索的。 – Nicachipal

+0

是的,但是當您更改數據列表中的項目時,您可以觸發更改事件併發送標題(或在您的班級中找到標題),在這種情況下,您可以更改頁面標題Page.Title = variableBookTitle –

+0

你花時間回覆。這意味着訪問ListView或FormVew控件。你會怎麼做?你可以給我一個例子嗎 ? – Nicachipal

0

好吧,這是一個基本的例子來完成w你需要的帽子,我創建一個簡單的listView綁定到Book對象列表,我爲ItemTemplate中的每個項目創建一個Button,並且我將命令名稱作爲本書的標題發送,在後面的代碼中使用此標題更改標題試試看。 ASPX

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestListView.aspx.cs" Inherits="TestListView" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Book Test</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
     <asp:ListView ID="ListView1" runat="server"> 
      <ItemTemplate> 
       <div> 
        <asp:Label ID="lblTitle" Text='<%# Eval("Title")%>' runat="server" /> 
        <asp:Button ID="btnChange" runat="server" CommandName='<%# Eval("Title")%>' Text="Select" OnCommand="btnChange_Command" /> 
       </div> 
      </ItemTemplate> 
     </asp:ListView> 

    </form> 
</body> 
</html> 

代碼隱藏

using System; 
using System.Collections.Generic; 
using System.Web.UI.WebControls; 

public partial class TestListView : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs args) 
    { 
     if (!IsPostBack) 
     { 
      var books = new List<Book> 
      { 
       new Book {Title = "Book 1"}, 
       new Book {Title = "Book 2"}, 
       new Book {Title = "Book 3"} 
      }; 
      ListView1.DataSource = books; 
      ListView1.DataBind(); 
     } 
    } 

    protected void btnChange_Command(object sender, CommandEventArgs e) 
    { 
     Page.Title = e.CommandName; 
    } 

} 

public class Book 
{ 
    public string Title { get; set; } 
} 
+0

嗨塞薩爾,我非常感謝你爲幫助我而努力。我運行你的代碼,它運作良好,但有問題。我沒有使用任何按鈕來觸發此事件或命令。也許我沒有解釋清楚。我想要完成的是:想象一下,用戶在主頁上,並且想要導航到顯示書的標題,圖像和說明的另一個頁面。我可以將一些信息傳遞到下一頁(標題)並輕鬆獲得頁面標題,但我沒有這樣做。我傳遞給的唯一參數是一個productId。 – Nicachipal

+0

使用productId,在您的Xml文件中進行XPath搜索以查找本書的名稱,您可以使用此文章指導此過程。 http://stackoverflow.com/questions/12951593/how-to-get-values-from-an-xml-file-matching-xpath-query-in-c-sharp –

+0

雖然,你給我一個好主意來修改有些事情。如果我選擇在同一頁面中顯示其他書籍(調用同一頁面),它將很有用。但是,當頁面首次呈現時,您的方法不起作用。這是否有道理,我在說什麼。但是,再次感謝您的幫助。 – Nicachipal

相關問題