【问题标题】:Kendo UI - Tooltip in a gridKendo UI - 网格中的工具提示
【发布时间】:2014-04-22 10:45:02
【问题描述】:

我正在尝试为我的网格创建一个工具提示,如下所示:

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

模板定义:

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

我在这里设置了一个示例:
http://jsbin.com/iJunOsa/21/edit

当我将鼠标悬停在“Wilton”上时,控制台中出现ReferenceError: Territories is not defined 错误

假设我要用普通 HTML 替换 storeTerritory 模板的内容,然后出现工具提示:

<p>Wilton</p>

可能是什么问题?

【问题讨论】:

    标签: javascript kendo-ui kendo-grid kendo-template kendo-tooltip


    【解决方案1】:

    问题是工具提示没有关联模型;为了做你想做的事,你需要使用一个函数来创建内容:

    $("#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);
        }
    });
    

    (更新demo

    【讨论】:

    • 很抱歉给您带来麻烦,我在工具提示中显示图像时遇到问题。如果您可以查看已编辑的问题,将不胜感激。
    • 请不要对改变其含义的问题进行编辑;而是提出一个新问题。
    【解决方案2】:
     grid = $("#grid").kendoGrid({
          dataSource: dataSource,
          scrollable: true,
          filterable: true,
          toolbar: ["create"],
          columns: [
            { field: "ID", width: "50px" },
            { field: "Text", width: "200px", attributes: {
              style: 'white-space: nowrap '
            }  }],
          editable: "incell"
        }).data("kendoGrid");
    
        $("#grid").kendoTooltip({
          filter: "td:nth-child(2)", //this filter selects the second column's cells
          position: "right",
          content: function(e){
            var dataItem = $("#grid").data("kendoGrid").dataItem(e.target.closest("tr"));
            var content = dataItem.Text;
            return content;
          }
        }).data("kendoTooltip");
    

    (Demo)

    【讨论】:

      【解决方案3】:

      问题是在模板的上下文中(运行时):

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

      没有像 Territoriesi 这样的东西,所以它失败了。

      【讨论】:

      • 我的错,模板代码的某些部分丢失了。我已更新示例,但问题仍然存在。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多