2016-11-10 23 views
13

Używamy p-DataTable z PrimeNG 1.0.0-beta.16Jak dodać klasę stylu do p-dataTable rzędu

Chcę dodać styl do wiersza, gdy wartość jest prawdą. Wymyśliłem, jak to zrobić z komórką, ale potrzebuję całego rzędu, aby zmienić jego tło.

<p-dataTable [hidden]="loading" [value]="timePeriods" scrollable="true" scrollHeight="400px" rowStyleClass="missingPeriod"> 
    <p-column field="StartDate" header="Begindatum" sortable="false"> 
     <template let-col let-timePeriod="rowData" pTemplate type="body"> 
      <span [class.missingPeriod]="!timePeriod.IsNext">{{timePeriod.StartDate | date: 'dd-MM yyyy'}}</span> 
     </template> 
    </p-column> 
    <p-column field="EndDate" header="Einddatum" sortable="false"> 
     <template let-col let-timePeriod="rowData" pTemplate type="body"> 
      <span>{{timePeriod.EndDate | date: 'dd-MM yyyy'}}</span> 
     </template> 
    </p-column> 
</p-dataTable> 

<span [class.missingPeriod]="!timePeriod.IsNext"> pracuje ale rowStyleClass="missingPeriod" nie jest.

Proszę o poradę.

Zaktualizowana składnia:

Aktualizacja do v1.0.1

<p-dataTable [hidden]="loading" [rowStyleClass]="customRowClass" [value]="timePeriods" scrollable="true" scrollHeight="400px"> 
    <p-column field="StartDate" header="Begindatum" sortable="false"> 
     <template let-col let-timePeriod="rowData" pTemplate type="body"> 
      <span [class.missingPeriod]="!timePeriod.IsNext">{{timePeriod.StartDate | date: 'dd-MM yyyy'}}</span> 
     </template> 
    </p-column> 
    <p-column field="EndDate" header="Einddatum" sortable="false"> 
     <template let-col let-timePeriod="rowData" pTemplate type="body"> 
      <span>{{timePeriod.EndDate | date: 'dd-MM yyyy'}}</span> 
     </template> 
    </p-column> 
</p-dataTable> 

a maszynopisu:

public customRowClass(rowData, rowIndex): string { 
    console.log("In customRowClass"); 
    console.log(rowData); 
    console.log(rowIndex); 
    return ""; 
} 

Nic wewnątrz customRowClass jest rejestrowane. Wydaje mi się, że ta metoda nie jest wywoływana.

+0

Gdzie znalazłeś RowStyleClass? Nie widzę tego na liście atrybutów na stronie primingu. –

+0

Znalazłem RowStyleClass przy użyciu Google. Może to być dla starszej wersji PrimeNG. Ich linki do przykładów nie działają, więc ich strona internetowa nie jest zbyt pomocna. –

+0

Czy próbowałeś użyć atrybutu 'styleClass'? –

Odpowiedz

-4

W wersji 1.1.3 PrimeNg jest to poprawione. Tak więc to pytanie może zostać zamknięte.

+2

nadal jest to uzasadnione pytanie "jak to zrobić". nie trzeba się zamykać –

17

rowStyleClass działa nieco inaczej niż myślisz; pobiera on funkcję jako dane wejściowe, która zwraca ciąg znaków (nazwę klasy CSS). Jest on wymieniony w PrimeNG DataTable docs.

W moim HTML Mam:

<p-dataTable [rowStyleClass]="lookupRowStyleClass" ...> 

W składniku:

lookupRowStyleClass(rowData: User) { 
    return rowData.accountDisabled ? 'disabled-account-row' : ''; 
} 

W globalnej pliku CSS:

/* TODO: this should really be in the component's CSS file, but it doesn't seem to apply to the PrimeNG data table properly there */ 
.disabled-account-row { 
    /* TODO: first try this without '!important', but you might need it */ 
    color: silver !important; 
} 

Jeśli to nie pomoże, musisz zaktualizować do najnowszej wersji . PrimeNG 1.0.0 RC5 jest dostępny od listopada 2016.

+0

Widziałem również to zatwierdzenie https://github.com/primefaces/primeng/issues/1296 sugerujące inną składnię. Ta wygląda lepiej, ponieważ mój wiersz musi być kolorowy w oparciu o dane wiersza. Nie jest to obiekt globalny, taki jak "użytkownik". Po prostu aktualizuję przy użyciu 'npm update --save', ale nadal nie mogę go uruchomić. –

+0

Czy możesz zamieścić zaktualizowany kod w pytaniu? –

+0

Właśnie opublikowałem mój najnowszy kod na początku mojego tematu, używając próbki na GitHub. –

0

Wygląda na to, że przyczyną jest scrollable="true". Gdy scrollable jest ustawione na true, używany jest inny szablon, który nie ma wiązania dla getRowStyleClass.

Tutaj można zobaczyć <tr> do tabeli, która jest nie przewijania jest wiążąca dla getRowStyleClass: https://github.com/primefaces/primeng/blob/02e88b16e811a10d8842deb1f5e354bfb295d4c9/components/datatable/datatable.ts#L180

ale <tr> dla przewijalnej tabeli nie mają wiążącej: https://github.com/primefaces/primeng/blob/02e88b16e811a10d8842deb1f5e354bfb295d4c9/components/datatable/datatable.ts#L257

Ty możliwe, zobacz oba przypadki w numerze this Plunkr i opublikowałem numer here.

Nie widzę powodu, dla którego metoda nie może być używana na przewijanych tabelach, dlatego wysłałem formularz PR z poprawką, która umożliwia monitorowanie here.

+0

Dziękuję za znalezienie problemu. Zasubskrybowałem Twój problem i poczekam na rozwiązanie. Po rozwiązaniu problemu zaznaczę Twój post jako odpowiedź. –

+0

Wygląda na to, że poprawka została scalona w: https://github.com/primefaces/primeng/pull/1614. Nie wiem, jak szybko wyda nowe wydanie. – Benjamin