Come ottenere un valore dell’etichetta dal controllo utente web di una pagina di contenuto utilizzando la pagina master

Ho un controllo utente web del libro.ascx e un formview:

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

Questo formview è databind in modo dinamico.
Ora ho una pagina di Contenuto Predefinito.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>

Voglio ottenere il valore dell’etichetta dal controllo utente web predefinito.pagina aspx.
Che cosa è il metodo migliore per risolvere questo problema.
Grazie.

InformationsquelleAutor sacrament | 2010-10-01



3 Replies
  1. 2

    Dal codice sottostante in Default.aspx.cs:

    protected void fv_OnDataBound(object sender, EventArgs e) 
    {
        Label fvLabel = (Label)fv.FindControl("bookID");
        lblBookId.Text = fvLabel.Text;
    }
    • Grazie Jon, ma il formview binded nel controllo io non sono vincolanti in default.aspx.
    • Dovrebbe funzionare allo stesso modo cercando di riferimento MasterPage controlli di una pagina di contenuto. Provare a utilizzare solo queste due righe di codice in Default.aspx.cs e vedere se funziona per voi. Etichetta fvLabel = (Etichetta)fv.FindControl(“bookID”); lblBookId.Testo = fvLabel.Di testo;
    • Ho provato, ma ancora lo stesso problema riferimento a un Oggetto non impostato su un’istanza di un oggetto.
    • Ok ragazzi ho capito come: è qui:
    • ContentPlaceHolder c = Pagina.Master.FindControl(“MainContentPlaceHolder”) come ContentPlaceHolder; UserControl usc = c.FindControl(“cartella1”) come UserControl; FormView fv = usc.FindControl(“fv”) come FormView; Etichetta lbl = fv.FindControl(“bookID”) come Etichetta;
    • Grazie lo stesso per i consigli
    • molto brutta soluzione se
    • la risposta alla vostra domanda e quindi accettare…non si otterrà una accurata di ‘auto-apprendimento” badge. …o semplicemente andare giù accetta la mia risposta 🙂

  2. 0

    Credo che il modo per ottenere quello che vuoi è quello di lasciare il libro-il controllo del fuoco, un evento dopo che si sa che cosa è il valore.

    È ora necessario accedere dalla pagina del valore all’interno del controllo. Che può essere raggiunto esponendo il valore tramite una proprietà o è possibile creare il proprio EventArgs e organizzare un Evento.

    public class StringEventArgs:EventArgs
    {
      public String Value {get; private set;}  
      public StringEventArgs(String val){ this.Value = val; }
    }
    • Mi piace la tua soluzione, ma penso che il sacramento è leggermente più junior che la tua risposta è diretta. Forse a piedi se l’intero processo di creazione dell’evento e quindi sottoscrizione, e mi piacerebbe dare un voto positivo si…l’inferno, io dico che i miei amici vota si, mi piacerebbe avere un Upvote citronas party sabato notte. 🙂
    • Io sono un po ‘ a corto di tempo adesso, ma forse io modificare questa risposta, questa notte per ottenere un upvote e voti dalla tua parte 😉
    • Io vado in un birra & chips di corsa, vado a controllare di nuovo più tardi.
  3. 0

    è voluto farlo lato client tramite javascript?

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

    Vorrei anche raccomandare di ottenere firebug per firefox e poi si può dare un’occhiata al codice html della pagina web. Potrai anche essere in grado di se e il debug di javascript.

    se cercare di trovare su questo lato server, provare questo.

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

    se questo non funziona, è possibile ottenere l’idea. mantenere il drill-down fino a trovare quello che stai cercando.

    • No, Jim non voglio arrivare da un javascript, invece voglio ottenere dal lato client il codice di Default.aspx.cs.
    • quindi vuoi jonnyblaze risposta.
    • sì, ma non posso gestire per trovare l’etichetta di controllo utente web in una pagina di contenuto.
    • Grazie Jim ora funziona. grazie per i consigli.

Lascia un commento