2014-08-28 14 views
7

Próbuję użyć funkcji columns.headerTemplate z Kendo UI Grid, aby dostosować nagłówek kolumny. Używa się tej funkcji, jak pokazano poniżej i jak wykazano przez this example I created. Zwykle podczas korzystania z Kendo UI templates widżet będzie przekazywał encję do funkcji szablonu, aby można było użyć różnych właściwości, aby dostosować html do renderowania.Nagłówek kolumny tabeli UI Kendo Funkcja szablonu nie uzyskuje dostępu do definicji kolumny

Debugowanie kodu siatki Kendo UI Widzę, że w metodzie _headerCellText wywołanie funkcji szablonu przechodzi w pustym obiekcie, a nie w kolumnie, mimo że obiekt kolumny znajduje się w zasięgu.

text = kendo.template(template, settings)({});

Czy istnieje inne podejście mogę podjąć przed uciekania się do niestandardowych szablonów nagłówku kolumny dla każdej kolumny lub gorzej - manipulacji jQuery widgetu świadczonych DOM?

Czy istnieje dobry powód do odstąpienia od wspólnego wzorca szablonu w ramach tego przypadku użycia?

// Example kendoGrid use of column.headerTemplate 
var templateFunction = function(shouldBeColumn) { 
    // shouldBeColumn is an empty object rather than the column object 
    return "Useless object:" + kendo.stringify(shouldBeColumn); 
    }; 

$("#grid").kendoGrid({ 
    dataSource: { 
     data: products, 
     pageSize: 20 
    }, 
    height: 550, 
    scrollable: true, 
    columns: [ 
     { field: "ProductName", title: "Product Name" }, 
     { field: "UnitPrice", title: "Unit Price", headerTemplate: plainTemplate }, 
     { field: "UnitsInStock", title: "Units In Stock", headerTemplate: templateFunction } 
    ] 
}); 
+0

Czy to sprawdzić z obsługą Telerik? Twoja argumentacja wydaje się spójna: pusty argument nie jest zbyt użyteczny, lepiej wysyłając obiekt kolumny. – OnaBai

+1

Równie mylące jest to, że rzeczywisty kod to: 'if (type === FUNCTION) {text = kendo.template (template, settings) ({});' tak nazywają 'kendo.template()' tylko jeśli szablon jest funkcją, ale dokumenty dla 'kenod.template()' określają, że tylko łańcuch jest poprawnym parametrem. http://docs.telerik.com/kendo-ui/api/framework/kendo#methods-template Gdyby to było w open-source'owej części Kendo, zapisałbym problem i wysłałam żądanie ściągnięcia, żeby to naprawić, ale wygląda na to, że powinieneś podnieść do rzeczywistego wsparcia Kendo. – CodingWithSpike

+0

Z mojego rozumienia wynika, że ​​twoje zachowanie działa zgodnie z zamierzeniami. Nie chcą przekazać ci obiektu kolumny. Dlaczego wybrali to? Idk. – Brett

Odpowiedz

0

RE: „Czy istnieje inne podejście mogę podjąć przed uciekania się do szablonów niestandardowych nagłówków kolumn dla każdej kolumny lub gorzej - jQuery manipulacja widget świadczonych DOM?”

Wywołanie funkcji otoki, która zwraca funkcję, a więc:

function createHeaderTemplate(columnName) { 
    return function() { 
     return "Custom: " + columnName; 
    }; 
} 

...

columns: [ 
    { field: 'field', headerTemplate: createHeaderTemplate('My Field') }, 
    { field: 'field2', headerTemplate: createHeaderTemplate('My 2nd Field') } 
] 
Powiązane problemy