javascriptkendo-uikendo-gridkendo-templatekendo-tooltip

Kendo UI - Tooltip in a grid


I'm trying to create a tooltip for my grid like this:

$("#grid").kendoTooltip({
    autoHide: true,
    showOn: "mouseenter",
    width:125,
    height:125,
    position: "right",
    filter: ".k-grid-content a.hasTooltip",
    content: kendo.template($("#storeTerritory").html())
});

The template definition:

<script type="text/x-kendo-template" id="storeTerritory">
<div class="tooltipcontent">
    #for(var i = 0; i < Territories.length; i++){#
        #if (Territories != 'null' && Territories != '')  {#
            <p>#=Territories[i].TerritoryDescription#</p>
        #} else{#
            <p>Information not available</p>
      #}#
    #}#
</div>
</script>

I've setup a sample here:
http://jsbin.com/iJunOsa/21/edit

I get a ReferenceError: Territories is not defined error in the console when I mouse over on 'Wilton'

Let's say I were to replace the contents of the storeTerritory template with plain-old HTML, then the tooltip appears:

<p>Wilton</p>

What could the issue be?


Solution

  • The problem is that there is no model associated with the tooltip; in order to do what you want, you need to create the content using a function:

    $("#grid").kendoTooltip({
        autoHide: true,
        showOn: "mouseenter",
        width: 125,
        height: 125,
        position: "right",
        filter: ".k-grid-content a.hasTooltip",
        content: function (e) {
            var row = $(e.target).closest("tr");
            var dataItem = $("#grid").data("kendoGrid").dataItem(row);
    
            var template = kendo.template($("#storeTerritory").html());
            return template(dataItem);
        }
    });
    

    (updated demo)