Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Repeater: nascondere alcuni dati

    Ciao a tutti, ho un repeater associato ad una query SQL che estrae i dati su degli incontri e li stampa a video. La mia domanda è questa: ho un campo di questa tabella che può essere vuoto o meno. Nel caso sia vuoto, l'intera riga (con anche l'intestazione) non deve essere visualizzata. Vi faccio un esempio:

    INCONTRO NORMALE
    Luogo: xxx
    Data: xxx
    Tema: xxx
    Relatore: xxx

    INCONTRO CON CAMPO RELATORE VUOTO
    Luogo: xxx
    Data: xxx
    Tema: xxx

    Il mio problema è che, associando semplicemente il DataReader che ottengo al Repeater, ottengo che la scritta "Relatore" appaia comunque, seguita da uno spazio vuoto, in questo modo:

    Luogo: xxx
    Data: xxx
    Tema: xxx
    Relatore:

    Come faccio a mettere un controllo per far si che l'intera riga venga nascosta in caso il campo relatore della tabella sia vuota? Ho pensato di mettere un Panel che racchiuda l'intera riga e applicare un funzione al DataBinder del campo Relatore, però poi non so, in questa funzione, come richiamare questo Panel, considerando che, al momento della creazione, gli ho assegnato un ID univoco (panelRelatore), mentre in realtà viene creato un Panel per ogni riga risultante dalla query al database.
    Sapreste aiutarmi? Grazie!
    Matteo "QMatteo" Pagani

  2. #2
    Potresti inserire nella Query un:
    codice:
    WHERE nomecampo <> ''
    Ciao, Auguri di Buona Pasqua a tutti

  3. #3
    No, perchè la tua soluzione non recuperebbe affatto gli incontri in cui non è specificato il campo "Relatore". Io invece ho bisogno che vengano recuperati tutti gli incontri, e che la riga in cui viene specificato il relatore venga visualizzata o meno a seconda del valore del campo della tabella...
    Matteo "QMatteo" Pagani

  4. #4
    Perchè all'interno del repeater non metti un panel, al cui interno c'è solo relatore, la cui visibilità è condizionata dal valore del campo?

    Fammi sapere
    Ciao
    K
    Kalman

  5. #5
    Si chiedo scusa ma non avevo aggiornato questo post... Avevo risolto proprio nel modo suggeritomi nell'ultimo post: come valore della proprietà visible del panel ho messo una funzione, che restituisce true o false a seconda del valore del campo relatore nel database... Grazie lo stesso!
    Matteo "QMatteo" Pagani

  6. #6
    Caro qmatteoq mi potresti dire come hai risolto il problema perché io le ho provate tutte ma non ne esco. Grazie :-)

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    lo ha "appena" scritto, ha messo un panel che rende visibile/invisibile la riga

  8. #8
    Ok, l'ho capito! Ho usato una IIF (oltre a altri mille tentativi) ma non riesco comunque a renderlo true o false. Grazie.
    N.

    Ecco il codice:

    ...
    <asp:Repeater ID="Repeater3" runat="server" DataSourceID="SqlDataSource4">
    <HeaderTemplate>[*]
    <asp:Panel ID="Panel3" runat="server" visible='<%# IIF(System.DBNull.Value.Equals(Eval("FilmType")), False, True)%>'>
    <span><asp:Label ID="lblPellicola" runat="server" Text="Pellicola"></asp:Label></span>
    </asp:Panel>
    <div class="datiStuff">
    <ul>
    </HeaderTemplate>
    <ItemTemplate>[*]<span><%# Eval("FilmType")%></span>
    </ItemTemplate>
    <FooterTemplate>[/list]
    </div>

    </FooterTemplate>
    </asp:Repeater>

  9. #9
    Puoi usare l'evento ItemDataBound per scrivere codice più facilmente, invecie che scriverlo inline nel markup; inoltre tu hai il panel nell'header template, quindi quello che vuoi fare non può funzionare.
    Dovresti mettere il panel per ogni riga.
    codice:
    <asp:Repeater ID="Repeater3" runat="server" DataSourceID="SqlDataSource4" OnItemDataBound="Repeater3_ItemDataBound">
    ...
    ...
    <ItemTemplate>[*]
            <asp:Panel ID="Panel3" runat="server" >
                <span><%# Eval("FilmType")%></span>
            </asp:Panel>
        
    </ItemTemplate>
    ...
    ...
    codice:
    protected void Repeater3_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        DataRow drow = e.Item.DataItem as DataRow;
        Panel pnl = e.Item.FindControl("Panel3") as Panel;
        if (drow != null)
        {
            pnl.Visible = drow["FilmType"] != null;
        }
    }

  10. #10
    Gluck ti ringrazio ma non posso mettere il panel all'interno dell' itemTemplate della repeater altrimenti mi si ripete il titolo per ogni record estratto dal db.
    Io l'ho risolto mettendo il panel all'interno di una datalist a cui ho associalo una sqldatasource specifica, del tipo SELECT TOP 1.

    Alla fine ci sarà: una formview che contiene una datalist (con panel) e una repeater.

    Credete che sia un problema?

    Grazie,

    N.

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.