61 messaggi dal 20 maggio 2009
Ciao,

ho una tabella html con vari rowspan impostati, devo sviluppare una funzionalità di filtro sulle righe, quindi per ogni colonna nell'intestazione ho aggiunto una <input type="text"/> e intercettando il keyup vorrei filtrare le righe della tabella.

vorrei eseguire tutto lato client in modo che sia istantaneo il filtro.

tab 1

A b
A c
A d

Usando una funzione jquery ho eseguito il merge della prima colonna rimuovendo i td e impostando il rowspan correttamente sul primo td.
in modo che A non venga ripetuto per ogni riga ma ce ne sia 1 solo con la cella alta 3


se filtro le righe con la parola chiave "c" viene eliminata la prima e la terza riga e quindi elimina anche il td che contiene A, le righe che contengono d e b quindi perdono il primo td e la tabella perde di coerenza.
Dovrei fare in modo che il primo td A viene eliminato solo se tutte le righe corrispondenti vengono eliminate (cioè se il filtro elimina b,c,d allore elimino anche il td A, altrimenti no=).

Qualche idea ???
Modificato da artanis il 23 maggio 2012 09.34 -

Vivaldi Francesco
456 messaggi dal 08 febbraio 2009
Ciao

Scusa ma credo di non aver afferrato bene il problema.

In pratica dovresti avere una griglia fatta in questo modo (metto tutto l'html così col copia/incolla puoi vedere se l'esito è quello che realmente hai):


<html>
<body>

<table width="100%" border="1">
  <tr>
    <th>Titolo</th>
    <th>Contenuto</th>
  </tr>
  <tr>
    <td rowspan="3">A</td>
    <td>1</td>
  </tr>
  <tr>
    <td>2</td>
  </tr>
  <tr>
    <td>3</td>
  </tr>
  <tr>
    <td rowspan="2">B</td>
    <td>4</td>
  </tr>
  <tr>
    <td>1</td>
  </tr>
</table>

</body>
</html>





Il tuo scopo è quello di filtrare in base al "Contenuto" (seconda colonna).
Per cui se l'utente digita 2 (nel mio esempio), dovresti vedere una sola riga con titolo "A" e contenuto "2".
Se invece digita 1, dovresti vedere sia la riga "A 1" che la riga "B 1".


Da quel che ho capito, il problema per te è capire quando nascondere "A" e quando lasciarla presente, riducendo solo il "colspan" in base al numero di righe.

E' questo il problema, giusto?

Se si, vedo se riesco a reperire il codice che avevo usato a suo tempo, altrimenti provo a "girarti" il ragionamento che avevo usato, poi lascio a te il lavoro di convertirlo in codice javascript.


PS: Dubito però di riuscirci prima del week-end, quindi se magari ti risponde qualcun altro è meglio
61 messaggi dal 20 maggio 2009
Ciao,
la situazione che hai illustrato è corretta, il mio problema è per aplpicare i filtri vado a nascondere o rimuovere delle intere righe
quindi se l'utente imposta 1 come filtro vado ad eliminare le righe
che hanno come contenuto 2,3,4
e il risultato è una tabella con 2 righe A1 e B2, e in questo caso funziona tutto molto bene.

Ma se l'utente imposta come filtro 2, quando vado ad eliminare la riga che contiene 1, elimino anche il td che ha il rowspan impostato.
quindi mi perdo la prima colonna.

<table width="100%" border="1">
  <tr>
    <th>Titolo</th>
    <th>Contenuto</th>
  </tr>
  <tr>
    <td rowspan="3">A</td>
    <td>1</td>
  </tr>
  <tr>
    <td>2</td>
  </tr>
  <tr>
    <td>3</td>
  </tr>
  <tr>
    <td rowspan="2">B</td>
    <td>4</td>
  </tr>
  <tr>
    <td>1</td>
  </tr>
</table>

Per apportare il filtro io utilizzo il comando jquery .remove o .hide sull'intera riga.
impostando come filtro 2, l'unica riga che rimane visibile è quella che contiene il 2 nella colonna contenuto.
quando elimino la prima riga della tabella
<tr>
    <td rowspan="3">A</td>
    <td>1</td>
  </tr>

elimino anche il td con la prima colonna che ha il rowspan.

il problema si verifica quando il filtro elimina la prima riga di un gruppo di righe rowspan.

Vivaldi Francesco

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.