Próbuję powiązać przewijaną siatkę kendo z javascript i mieć kilka problemów z szerokościami kolumn. Ta fiddle pokazuje problem (kod na końcu pytania). Podam nagłówki w html i dodam szerokość do jednego z nagłówków. Następnie javascript ustawia źródło danych (w kodzie produkcyjnym odbywa się to przez wywołanie ajax).Kendo Grid Column Width + Scrollable
chcę uniknąć konieczności ustawić właściwość columns.width w javascript, ponieważ
- Mam wiele siatek, że skoro moi ViewModels są starannie skonstruowane są w stanie automatycznie rozpoznać kolumny wymagane. W naszej aplikacji mamy ponad 100 girdów, a określenie listy kolumn dla wszystkich z nich byłoby nieporęczne.
- Czuje się źle, tak, to jest informacja o stylizacji.
Rozumiem, że funkcjonalność wynika z tego, że kendo tworzy dwie siatki, jedną dla nagłówków i jedną dla przewijanej treści. Jednak inne biblioteki kontrolne, z których korzystałem w przeszłości, które robią podobne rzeczy, zawsze kopiowały informacje o stylizacji między dwiema siatkami, aby ułatwić deklaratywne stylizacje przy jednoczesnym zachowaniu synchronizacji dwóch tabel - po prostu nie jestem pewien, co to jest "kendo" droga do tego jest.
HTML z skrzypce
<table>
<thead>
<th class="p20" data-field="status">Status</th>
<th data-field="description">Description</th>
</thead>
</table>
Javascript
$('table').kendoGrid({
dataSource: [
{ status: 'On', description: 'a longer description' },
{ status: 'On', description: 'a longer description' },
{ status: 'On', description: 'a longer description' },
{ status: 'On', description: 'a longer description' },
{ status: 'On', description: 'a longer description' },
{ status: 'On', description: 'a longer description' }
],
scrollable: true
});
CSS
.k-grid-content {
height: 100px;
}
.p20 {
width: 20%;
}
Oczywiście, to by działało, ale chcę określić moje szerokości w mark-up nie w javascript. Konieczność określenia szczegółów każdej kolumny dla każdej siatki jest bardzo uciążliwym zadaniem i jest niewłaściwym miejscem (mówiąc semantycznie) do określenia stylów. –
Tak, później zrozumiałem, o czym rozmawiasz, nieco inne niż pytanie z wczoraj. W jaki sposób planujesz poradzić sobie z siatką, w której szerokość tekstu/wartości przekracza 20%? Czy zawsze wyświetlasz te same dane w kolumnach? Możesz ustawić szerokość we wszystkich kolumnach i nagłówkach, jak chcesz, i wdrożyć ellipsis ("moja niepełna wartość ..."), aby uniknąć różnicy szerokości/synchronizacji. – Vojtiik
Zasadniczo, kendo ustawia układ tabeli na "ustalony" dla przewijanych siatek (co jest denerwujące na początek), co oznacza, że niektóre z naszych kolumn są zbyt szerokie. Mamy kilka kolumn, które są tylko ikonami wskaźnika stanu i chcę ustawić je tylko na kilka pikseli. Wszystko inne dostaje elipsę, a siatka może być również zmieniana, aw razie potrzeby pojawiają się poziome paski przewijania (zobacz tabelę na portalu zarządzania lazuru, aby zobaczyć przykład takiej funkcjonalności). Szkoda, że kendo przyjmuje podejście "dwóch sieci", nie czyniąc złożoności niewidoczną dla konsumentów. –