sacrament
sacrament

Reputation: 63

How to get a label value from web user control to a content page using master page

I have a web user control book.ascx and a formview:

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

This formview is databind dynamically. Now i have a Content page 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>

I want to get the value of the label from web user control to a default.aspx page. Whats the best method to solve this issue. Thank You.

Upvotes: 0

Views: 16834

Answers (3)

jim
jim

Reputation: 27426

you wanted to get it on the client side via javascript?

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

I would also recommend getting firebug for firefox and then you can take a look at the generated html of the webpage. You'll also be able to step though and debug your javascript.

if trying to find this on the server side try this.

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

if this doesn't work, you can get the idea. keep drilling down until you find what you're looking for.

Upvotes: 0

citronas
citronas

Reputation: 19375

I guess the way to achieve what you want is to let the book-control fire an event after it knows what the value is.

You now need to gain access from the page to the value inside the control. That can be achieved by exposing the value via a property or you can create your own EventArgs and throw an Event.

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

Upvotes: 0

jon3laze
jon3laze

Reputation: 3196

From the code behind in the Default.aspx.cs:

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

Upvotes: 2

Related Questions