0

基本上我有一个剑道网格,其中我的几个专栏也有剑道下拉菜单。我想根据用户从“仪器”下拉列表中选择的值附加一个工具提示。

这是我的网格 javascript 代码(使用 MVVM 模式):

      tradesGrid = $("#tradesGrid").kendoGrid({
        dataSource: datasource,
        toolbar: [
            { name: "create", text: "Add Trade" }
        ],
        columns: [{
            field: "TradeId"
        },
       {
            field: "Instrument",
            editor: instrumentsDropDownEditor, template: "#=Instrument#"
        },
         { command: ["edit", "destroy"] },
        ],
        sortable: true,
        editable: "popup",
    });

这是仪器下拉菜单的编辑器功能:

 function instrumentsDropDownEditor(container, options) {

    var instrItems = [{     
        "optionInstr": "OPTION 22/11/2013 C70 Equity"
    }, {
        "optionInstr": "OPTION 26/11/2013 C55 Equity"
    },
     {
        "optionInstr": "OPTION 30/11/2013 C80 Equity"
     }
    ];

    var input = $('<input id="Instrument" name="Instrument">'); 
    input.appendTo(container);
    input.kendoDropDownList({
        dataTextField: "optionInstr",
        dataValueField: "optionInstr",
        dataSource: instrItems, // bind it to the brands array
        optionLabel: "Choose an instrument"
    }).appendTo(container);
}

在我的 Html 视图文件中,我从这个想法开始:

  <span class="key-button"
              title="Instrument Details!!!"
              data-role="tooltip"
              data-auto-hide="true"
              data-position="right"
              data-bind="events: { show: onShow, hide: onHide }"
  </span>
4

1 回答 1

1

我现在没有时间安装 jsFiddle,但我很确定这会奏效......

在 javascript 中初始化您的工具提示,并指定作为函数的内容:

var myTooltip = "";

var tooltipWidget = $("#whatever").kendoTooltip({
  filter: "a",
  content: function (item) { return myTooltip; },
  ...
}).data("kendoTooltip");

然后在您的下拉小部件上,指定一个更改函数处理程序,该处理程序设置myTooltip为您想要的任何内容。

var onSelect = function (e) {
    myTooltip = ...;
    tooltipWidget.refresh();
};

$("#dropdownlist").kendoDropDownList({
  select: onSelect,
  ...
});

或者,您可以更改titleHTML 元素的属性,如果这样更容易的话。但是,工具提示小部件在显示后不会刷新其内容,这就是为什么您需要tooltipWidget.refresh()在更改内容后手动调用。

于 2013-10-31T00:29:14.693 回答