102 messaggi dal 26 maggio 2009
Ciao a tutti,

ho la seguente listview semplicissima
<asp:ListView runat="server" ID="ltvElencoMacchineCat" DataSourceID="SqlDataSourceElencoMacchineCat" GroupItemCount="3">
    <LayoutTemplate>
        <table width="100%" height="100%" border="1px" align="center" cellpadding="0" cellspacing="0">
            <asp:PlaceHolder runat="server" ID="groupPlaceHolder"></asp:PlaceHolder>
        </table>
    </LayoutTemplate>
    <GroupTemplate>
        <tr>
            <div ID="itemPlaceholder" runat="server" />
        </tr>
    </GroupTemplate>
    <ItemTemplate>
        <td valign="middle" align="center">
            <table width="150px" height="100%" border="1px" align="center" cellpadding="5" cellspacing="0">
                <tr>
                    <td height="70px" valign="middle" align="center"><span class="titolograndenero"><asp:PlaceHolder runat="server" ID="PercentualeProdotti" /></span></td>
                </tr>
                <tr>
                    <td valign="middle" align="center"><span class="testopiccologrigio"><asp:PlaceHolder runat="server" ID="TitoloCategoria" /></span></td>
                </tr>
            </table>
        </td>
    </ItemTemplate>
</asp:ListView>
<asp:SqlDataSource ID="SqlDataSourceElencoMacchineCat" runat="server" ConnectionString="<%$ ConnectionStrings:CompanyReadConnectionString %>" SelectCommand="SELECT * FROM [Categorie] WHERE ID_Appartenenze = 1 ORDER BY ID_Categoria"></asp:SqlDataSource>


e il seguente codice

<script runat="server">
    Protected Sub ltvElencoMacchineCat_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.ListViewItemEventArgs) Handles ltvElencoMacchineCat.ItemDataBound

        If (e.Item.ItemType = ListViewItemType.DataItem) Then

            If ReadMacchinari.HasRows = True Then
                Dim plcTitCat As PlaceHolder = DirectCast(e.Item.FindControl("TitoloCategoria"), PlaceHolder)
                Dim TitoloCategoria As New Literal
                TitoloCategoria.Text = DirectCast(e.Item.DataItem, DataRowView).Row("Titolo").ToString()
                plcTitCat.Controls.Add(TitoloCategoria)
            Else
                e.Item.Visible = False
            End If
                
            ReadMacchinari.Close()
            CommMacchinari.Connection.Close()
            CommMacchinari.Dispose()
            ConnMacchinari.Dispose()
        End If

    End Sub

</script>


Funziona tutto, ma quando mi fa questo e.Item.Visible = False non mi reimposta poi il group per cui io mi ritrovo magari una situazione del genere

item | | |
| item | |
item | item | |

Come faccio a dirli di metterli tutti su una riga fino al max 3?
Grazie
Tommaso
379 messaggi dal 23 aprile 2007
Hai provato a non nascondere l'intero item ma solo la table inserita al suo interno?
102 messaggi dal 26 maggio 2009
Grazie per l'interessamento!

Comunque ho provato proprio ora ma non cambia!

Altri suggerimenti?

Grazie
Tommaso
379 messaggi dal 23 aprile 2007
Lo stesso di prima, cioè nascondere la tabella, ma settare la width nel td dell'itemTemplate, qualcosa del genere:

<ItemTemplate>
        <td valign="middle" align="center" width="150px">
            <table width="150px" height="100%" border="1px" align="center" cellpadding="5" cellspacing="0" id="pincopall" runat="server">
                <tr>
                    <td height="70px" valign="middle" align="center"><span class="titolograndenero"><asp:PlaceHolder runat="server" ID="PercentualeProdotti" /></span></td>
                </tr>
                <tr>
                    <td valign="middle" align="center"><span class="testopiccologrigio"><asp:PlaceHolder runat="server" ID="TitoloCategoria" /></span></td>
                </tr>
            </table>
        </td>
    </ItemTemplate>
3.920 messaggi dal 28 gennaio 2003
Hai provato a modificare la sql

SELECT * FROM [Categorie] WHERE ID_Appartenenze = 1 ORDER BY ID_Categoria


in modo da prefiltrare i record che non hanno dati correlati?

Pietro
102 messaggi dal 26 maggio 2009
No, non va neanche cosi,

il problema non è tanto il fatto di non far visualizzare l'item ma piuttosto quello di rigenerare il group.

Infatti ad ogni ItemDataBound lui conta e dopo 3 record mi chiude il gruppo quindi il tr.

Quindi mi capita che magari nella prima riga vedo un solo record nella seconda magari 2 ecc...perche appunto quanto sono vuoti o meglio non rispettano una condizione io li rendo invisibili, ma non riesco a toglieri dal conteggio del databound

Grazie
Tommaso
102 messaggi dal 26 maggio 2009
Non riesco a prefiltrare i record perche li devo far passare per fare un conteggio dei record di un altra tabella e successivamente se ci sono record o meno faccio la visualizzazione o no (con i problemi già descritti).

In pratica io apro la tabella categorie e successivamente apro la tabella prodotti che al suo interno ha il campo id_categorie che contiene appunto l'id primario della tabella categorie.

Se non ci sono prodotti non deve visualizzare il record altrimenti deve contare il numero dei record presenti per categoria.

Non posso neanche fare una join perche il campo esterno della tabella prodotti ha dentro gli id delle categorie in questo modo ";id_cat_1;;id_cat_2;;id_cat_3;;ecc;"

Spero di esser stato chiaro!

Grazie x l'aiuto
Tommaso
379 messaggi dal 23 aprile 2007
di quanti record parliamo? se esegui le 2 query ed effettui il filtraggio sul resultSet? ti eviti il lavoro nell'ItemDataBound

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.