2012-06-25 15 views
5

Sto usando un plug-in jQuery da qui http://www.tablefixedheader.com/ per creare una tabella accattivante con un'intestazione fissa, l'ordinamento e altre funzioni interessanti. Ora, ho anche guardato jqGrid, che sembra ridicolmente fantastico, ma stiamo facendo cose strane con la nostra fonte di dati e non penso che sia abbastanza pronto per giocare bene con jqGrid.Come posso modificare il plugin jQuery di FixedTableHeader per avere anche una prima colonna fissa?

Ad ogni modo, i miei capi vogliono che la prima colonna della tabella che ho creato sia fissa, in modo che possano scorrere sull'asse x, ma vedere ancora la prima colonna. Come posso modificare questo plugin per fornire questa funzionalità?

Qualsiasi aiuto è molto apprezzato

Grazie

EDIT:

Ho provato ad aggiungere:

th:first-child 
{ 
    position  : relative; 
} 
td:first-child 
{ 
    position  : relative; 
} 

Così come "fisso", ma sembra essere più complicato di questa semplice soluzione ...

Fare questo ha un effetto , non è così piacevole. Fare questo cambiamento fa sì che rimanga statico sul lato sinistro, ma non riesco davvero a scorrere verso il basso, e il th non sembra funzionare.

EDIT 2:

ho iniziato l'implementazione della soluzione indicato di seguito, anche se non sono del tutto fiducioso nelle mie capacità di sperimentare con questo plugin. In ogni modo, ecco lo stato attuale del bricolage:

io continuerò aggiornamento come vado ...

ottengo un errore che dice this.offset.top è null o non un oggetto ... bla,

Questo codice va nella cosa document.ready:

  var currentTop = 0; 
     var currentLeft = 0; 
     var currentWidth = 0; 
     var currentHeight = 0; 
     var currentContent = ""; 
     var currentDiv = ""; 
     var currentID = ""; 
     $('td:first-child').each(function (index) { 
      currentTop = $(this).offset.top; 
      currentLeft = $(this).offset.left; 
      currentWidth = $(this).width; 
      currentHeight = $(this).height; 
      currentContent = $(this).html(); 
      currentID = "fixed_column_cell" + index; 
      currentDiv = "<div class=\"fixed_column_cells\" id=\"" + currentID + "\">" + currentContent + "</div>"; 
      $('body').append(currentDiv); 
      $('#' + currentID).offset({ top: currentTop, left: currentLeft }); 
      $('#' + currentID).width(currentWidth); 
      $('#' + currentID).width(currentHeight); 
     }); 
     $('fixed_column_cells').css('position', 'fixed'); 

Attualmente bloccato

+0

Sarà molto difficile modificare il plugin per fare quello che vuoi. –

+0

Quando dici molto difficile, quanto tempo pensi che ci vorrebbe uno sviluppatore veterano? –

+0

Credo di comprendere appieno cosa sta facendo il plugin, di implementare questa funzionalità in modo che sia compatibile con tutto il resto (paging, colonne ordinabili, colonne ridimensionabili, ecc.) E per far funzionare questo lavoro tra tutti i principali browser ci vorranno almeno diversi giorni. –

risposta

2

Interessante problema. Non penso che scoprirai che l'elemento della cella di tabella (TD) vorrà comportarsi in questo modo per te. La cosa da fare potrebbe essere il loop su tutto il td: first-child e copiare il loro contenuto in div della stessa dimensione che si sovrappongono ai TD. quelle div ti permetteranno di posizionarle correttamente.

Penso che tu stia correndo una limitazione di qualcosa con un comportamento intrinseco delle celle di una tabella.

Pseduocode:

  • Per ogni cella nella prima colonna
  • ottenere posizione superiore sinistra
  • larghezza get e altezza
  • creare nuovo div di stesse dimensioni nella stessa posizione
  • copia contenuto in nuovo div
  • set div a pos fisso
+0

Tentativo della soluzione, ma non riuscito finora (vedere la mia modifica per lo stato corrente). L'idea sembra piuttosto buona! –

+0

@Silver C'è un problema con l'uso di .offset. Ho aggiunto un commento per te sopra. – SimplGy

0

so che hai detto che avete già ottenuto la libreria jQuery per la testa fissa ER. Ci sono tuttavia alcune librerie là fuori per le colonne fisse e le intestazioni. Uno che ho usato è Fixed Table che consente di impostare la colonna sinistra e le intestazioni da correggere. Spero che questo ti possa aiutare

+0

Giusto, ad eccezione delle funzionalità che questo plugin consente già, come l'ordinamento. Ho anche lavorato con esso per aggiungere un'evidenziazione di riga personalizzata in base al valore di una particolare riga e così via. –

Problemi correlati