使用Dojo DataGrid和JSonRestStore显示dijit工具提示



是否有一种更有效的方法来显示工具提示,一旦单元格被悬停?使用structure属性来格式化数据网格,是否有一种方法可以使用formatter来显示dijit工具提示,而不是使用html title属性?

这是显示工具提示的列。

    var subscriberGridLayout = [        
       {    
            name: " ",
            field: "ExpirationDate",
            formatter: function(value){
                if(value){
                    expDate = formatDateIE(value);
                    return toolTip();
                }
                else
                    return " ";
            },
            styles: "text-align: center;",
            width: "30px"
        },

下面的函数通过image标签显示一个工具提示图标,但是它只是使用html的标题来显示一个弹出窗口。

    function toolTip(){
        src = "'/Subscriber/resources/images/icons/icon_error.gif'/>";
        if(dojo.date.difference(today, expDate) <= 0 ){
            message = "Credential expired.";
            return "<img title='"+ message + "' src=" + src + "";
        } else if(dojo.date.difference(today, expDate) <= 60) {
            message = "This Subscriber will expire in " + dojo.date.difference(today, expDate) + " days."
                        + "&#10; &#10;To prevent an interruption in the Subscriber&rsquo;s access, please sumbit a request to " + 
                            "renew the Subscriber within 30 days of the expiration date.";
            return "<img title='"+ message + "' src=" + src + "";
        } else {
            return " ";
        }
    }

我会这样做:

new Tooltip({
    connectId: grid.domNode,
    selector: "td",
    getContent: function(matchedNode){
        return matchedNode.innerText
    }
});

使用grid.domNode,您可以获得小部件生成的DOM。网格生成一个表结构,因此您可以使用selectorgetContent属性来获取单元格。

我必须说这不是真正正确的方法,因为现在您正在处理Dojo小部件的内部结构。如果他们决定不使用表作为DOM结构,你的代码将无法工作。

但我不认为有更好的方法来实现这一点,最终您将始终必须将Dojo单元转换为DOM节点(因为工具提示是基于DOM的)。你当然可以将工具提示连接到每个单元格,但我之前尝试过,它有一点bug(有时工具提示不弹出)。

我还制作了一个JSFiddle来展示一个工作示例。

相关内容

  • 没有找到相关文章

最新更新