Как получить значение метки из пользовательского веб-элемента управления на странице содержимого с помощью главной страницы - PullRequest
0 голосов
/ 01 октября 2010

У меня есть веб-контроль пользователя book.ascx и форма просмотра:

<formview runat="server" id="fv">
<ItemTemplate>
<asp:Label runat="server" id="bookID" Text='<%# Eval ("bookId") %>' />
</ItemTemplate>
</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>

Я хочу получить значение метки из пользовательского веб-элемента управления на страницу default.aspx.Какой лучший способ решить эту проблему.Спасибо.

Ответы [ 3 ]

2 голосов
/ 01 октября 2010

Из кода в Default.aspx.cs:

protected void fv_OnDataBound(object sender, EventArgs e) 
{
    Label fvLabel = (Label)fv.FindControl("bookID");
    lblBookId.Text = fvLabel.Text;
}
0 голосов
/ 01 октября 2010

Я полагаю, что способ добиться того, чего вы хотите, - это позволить элементу управления книги запустить событие после того, как он узнает, каково значение.

Теперь вам нужно получить доступ со страницы к значению внутриконтроль.Это может быть достигнуто путем выставления значения через свойство или вы можете создать свои собственные EventArgs и бросить событие.

public class StringEventArgs:EventArgs
{
  public String Value {get; private set;}  
  public StringEventArgs(String val){ this.Value = val; }
}
0 голосов
/ 01 октября 2010

Вы хотели получить его на стороне клиента через JavaScript?

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

Я бы также порекомендовал получить firebug для firefox, а затем вы можете взглянуть на сгенерированный 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"; 

, если это не работает, вы можете понять это.продолжайте сверлить, пока не найдете то, что ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...