如何使用母版页从Web用户控件获取标签值到内容页面

时间:2010-10-01 17:32:11

标签: asp.net forms controls label

我有一个Web用户控件book.ascx和一个formview:

<formview runat="server" id="fv">
<ItemTemplate>
<asp:Label runat="server" id="bookID" Text='<%# Eval ("bookId") %>' />
</ItemTemplate>
</FormView>

此formview是动态数据绑定。 现在我有一个内容页面Default.aspx:

<%@ Register src="Book.ascx" tagname="Book" tagprefix="uc1" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<uc1:Book id="book1" runat="server"/>
<asp:Label runat="server" id="lblBookId" />
</asp:Content>

我想从web用户控件获取标签的值到default.aspx页面。 什么是解决这个问题的最佳方法。 谢谢。

3 个答案:

答案 0 :(得分:2)

来自Default.aspx.cs中的代码:

protected void fv_OnDataBound(object sender, EventArgs e) 
{
    Label fvLabel = (Label)fv.FindControl("bookID");
    lblBookId.Text = fvLabel.Text;
}

答案 1 :(得分:0)

你想通过javascript在客户端获取它吗?

getElementById('<%=lblBookId.ClientID%>')

我还建议为firefox获取firebug,然后你可以查看生成的网页html。您还可以逐步调试您的JavaScript。

如果试图在服务器端找到这个,试试这个。

ContentPlaceHolder ph = Page.Master.FindControl("ContentPlaceHolder1");   
UserControl Uc = ph.Controls(0);
FormView fv = up.FindControl("fv");
Label label = fv.FindControl("lblBookId");
label.Text = "Hi there"; 

如果这不起作用,你可以得到这个想法。继续向下钻,直到找到你想要的东西。

答案 2 :(得分:0)

我想实现你想要的方法是让书籍控制在它知道价值是什么之后发动一个事件。

您现在需要从页面访问控件内的值。这可以通过通过属性公开值来实现,或者你可以创建自己的EventArgs并抛出一个事件。

public class StringEventArgs:EventArgs
{
  public String Value {get; private set;}  
  public StringEventArgs(String val){ this.Value = val; }
}