Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887

    [3.5 - C#] Header Repeater

    Non ricordo una cosa, come valorizzo una label presente nella HEADER di un Repeater con un campo della sua sorgente ?

    Sto provando con: Text='<%# Eval("nomecampo") %>' ma non va.

    Ho provato anche (nell'itemDataBound):

    Nel caso della Header:
    codice:
      DataRowView riga = (DataRowView) e.Item.DataItem;             
      Label lb = new Label();
      lb = (Label)e.Item.FindControl("lb_pmdal_capitolo");
      lb.Text = riga["pmdal_capitolo"].ToString();
    ma riga è null. Come si fa, per un campo della HEADER ?

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Risolto così, per ora (nel caso di -ListItemType.Header- non recuperava la riga):

    codice:
            protected void Rtp_ItemDataBound(Object Sender, RepeaterItemEventArgs e)
            {
                if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
                {
                    DataRowView riga = (DataRowView) e.Item.DataItem;
                    
                    Label lb = new Label();
    
                    RepeaterItem RepItem = (RepeaterItem) Rtp.Controls[0];
    
                    lb = (Label) RepItem.FindControl("lb_pmdal_capitolo");
                    lb.Text = riga["pmdal_capitolo"].ToString();
                    .................

  3. #3
    Anzichè scrivere:
    codice:
    RepeaterItem RepItem = (RepeaterItem) Rtp.Controls[0];
    potresti provare con:
    codice:
    RepeaterItem RepItem = Rtp.HeaderRow;
    e successivamente ti cerchi la label in questa maniera:
    codice:
    headerRow.FindControl(NOME_CONTROLLO);
    Spero di aver compreso il tuo problema. Se dovessi averlo fatto, puoi provare ad utilizzare la mia soluzione, forse è un po' più elegante

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Per il repeater non mi trova nessuna proprietà .HeaderRow (invece di Controls[0])

    Sei sicuro che esista ?

  5. #5
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    da questo punto di vista nn mi è mai piacuto lo sviluppo che hanno fatto ... avrei preferito a livello di visualizzazione dati un evento per ogni area bindata


  6. #6
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Infatti è confusionario e dispersivo. Sono d'accordo.
    E poi, quando ci sono piu' modi di fare una cosa spesso è negativo.

    Comunque, non ho capito bene, cosa intendi per 'un evento per ogni area' ?

  7. #7
    Utente di HTML.it L'avatar di GabbOne
    Registrato dal
    Mar 2006
    Messaggi
    577
    Ad esempio in un repeater hai le sezioni EmpityTemplate , footer templete , item template etc etc,

    avrei preferito eventi del tipo OnFooterDataBound OnHeaderDataBound etc etc ...

    questo ti permette di non avere degli if che vengono valutati per ognuno degli n item bindati ( come nel tuo caso) e poi riesci anche ad avere uno supporto maggiore da vs poiche ti trovi questi eventi disponbili sulla finestra delle proprietà e tra l'altro la routine di risposta all'evento ha gia i parametri da manipolare belli e pronti

    Ovviamente questa è solo la mia opinione


  8. #8
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Beh a parte questo, che sarebbe una miglioria, credo che la confusione maggiore siano le modalità di intervento fra i vari componenti di Listing, come il Repeater, il GridView, DataList etc.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.