2014-08-28 7 views
7

Sto tentando di utilizzare la funzione columns.headerTemplate di un Kendo UI Grid per personalizzare l'intestazione della colonna. Si utilizza questa funzione come mostrato di seguito e come dimostrato da this example I created. Normalmente quando si utilizza Kendo UI templates, il widget passerà l'entità nella funzione modello in modo da poter utilizzare le varie proprietà per personalizzare l'html da rendere.Intestazione colonna UI Kendo Intestazione della funzione Campo non ha accesso alla definizione colonna

Debug del codice di rete UI di Kendo È possibile notare che nel metodo _headerCellText la chiamata alla funzione modello passa in un oggetto vuoto anziché nella colonna anche se l'oggetto colonna è nell'ambito.

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

C'è un altro approccio che posso prendere prima di ricorrere a modelli di intestazione colonna personalizzata per ogni colonna o nel male - la manipolazione jQuery del widget reso DOM?

C'è una buona ragione per deviare dal modello di modello comune nel framework per questo caso d'uso?

// 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

Hai controllato questo con supporto Telerik? Il tuo argomento sembra coerente: un argomento vuoto non è molto utile, meglio inviare l'oggetto colonna. – OnaBai

+1

Ugualmente come confuso è che il codice attuale è: 'if (type === FUNCTION) {text = kendo.template (template, settings) ({});' quindi chiamano 'kendo.template()' solo se template è una funzione, ma i documenti per 'kenod.template()' indicano che solo una stringa è un parametro valido. http://docs.telerik.com/kendo-ui/api/framework/kendo#methods-template Se questo fosse nella parte open source di Kendo, registrerei un problema e ho inviato una richiesta di pull per risolvere il problema, ma sembra qualcosa che dovresti sollevare al reale supporto Kendo. – CodingWithSpike

+0

È a mia conoscenza che il comportamento che si ottiene sta funzionando come previsto. Non vogliono passarti l'oggetto colonna. Perché hanno scelto questo? Idk. – Brett

risposta

0

RE: "C'è un altro approccio che posso prendere prima di ricorrere a modelli di intestazione di colonna personalizzata per ogni colonna o nel male - la manipolazione jQuery del widget reso DOM?"

richiamare una funzione wrapper che restituisce una funzione, quindi:

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

...

columns: [ 
    { field: 'field', headerTemplate: createHeaderTemplate('My Field') }, 
    { field: 'field2', headerTemplate: createHeaderTemplate('My 2nd Field') } 
] 
Problemi correlati