C# 如何从动态填充的FormView控件更新Web表单中的页面标题?

C# 如何从动态填充的FormView控件更新Web表单中的页面标题?,c#,asp.net,C#,Asp.net,FormViewTitle如果ListView或FormView控件(ASP.NET)中有标记元素,则如何更新页面标题,该元素将根据检索的数据进行更改。例如一本书的书名。控件将在生成页面后检索标题。我的问题是,有没有一种方法可以在页面呈现后更新页面标题,或者以某种方式将此信息传递给页面。标签标题(ID)值的标题 请帮忙 这是我的代码 <asp:FormView ID="FormViewTitle" Runat="server" D

FormViewTitle如果ListView或FormView控件(ASP.NET)中有标记元素,则如何更新页面标题,该元素将根据检索的数据进行更改。例如一本书的书名。控件将在生成页面后检索标题。我的问题是,有没有一种方法可以在页面呈现后更新页面标题,或者以某种方式将此信息传递给页面。标签标题(ID)值的标题

请帮忙

这是我的代码

    <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>

在代码隐藏页面类中的更改事件中,您可以尝试以下操作:

Page.Title = "Change Book Title";

好的,这里有一个基本的例子来实现您想要的,我创建一个简单的listView绑定到图书对象列表,我为ItemTemplate中的每个项目创建一个按钮,我将图书的标题作为命令名发送,在代码中包含这个标题,我更改页面的标题,试试看。 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; }
}
使用系统;
使用System.Collections.Generic;
使用System.Web.UI.WebControl;
公共部分类TestListView:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件args args)
{
如果(!IsPostBack)
{
var books=新列表
{
新书{Title=“Book 1”},
新书{Title=“Book 2”},
新书{Title=“Book 3”}
};
ListView1.DataSource=书籍;
ListView1.DataBind();
}
}
受保护的void btnChange_命令(对象发送方,CommandEventArgs e)
{
Page.Title=e.CommandName;
}
}
公共课堂用书
{
公共字符串标题{get;set;}
}

不,它不是那样工作的。那就太简单了。请记住,标题是在生成页面后从DB或XML文件中检索的。是的,但是当您更改数据列表中的项目时,您可以触发更改事件并发送标题(或在类中查找标题),在这种情况下,您可以更改页面标题,page.title=variablebooktile感谢您花时间回复。这意味着要访问ListView或FormVew控件。你会怎么做?你能给我举个例子吗?嗨,塞萨尔,我真的很感谢你努力帮助我。我运行了你的代码,它工作得很好,但有问题。我没有使用任何按钮触发此事件或命令。也许我还没有解释清楚。我试图做到的是:假设用户在主页上,想要导航到另一个页面,在那里显示一本书的标题、图像和描述。我可以将一些信息传递到下一页(标题)并轻松获取页面标题,但我没有这样做。我要传递给的唯一参数是productId。使用productId,在Xml文件中进行XPath搜索以查找书籍的名称,您可以使用本文来指导这一过程。虽然,你给了我一个好主意来修改一些东西。如果我选择在同一页中显示其他书籍(调用同一页),效果会很好。但是第一次呈现页面时,您的方法不起作用。我说的有道理吗。不过,再次感谢您的帮助。是的,您可以在同一页面上显示本书的信息,我建议您使用Ajax。第一次没有选择任何书籍,因此没有为页面选择标题,但是如果您找到了答案,您可以将其作为答案进行检查。
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; }
}