一旦细胞悬停,是否有更有效的方式显示工具提示?使用structure属性来格式化datagrid,有没有办法使用formatter来显示dijit toolTip,而不是使用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"
},
这是通过图片标签显示工具提示图标的功能,但不是dijit工具提示,它只是使用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."
+ " To prevent an interruption in the Subscriber’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 " ";
}
}
答案 0 :(得分:4)
我会做类似的事情:
new Tooltip({
connectId: grid.domNode,
selector: "td",
getContent: function(matchedNode){
return matchedNode.innerText
}
});
使用grid.domNode
,您可以获取窗口小部件的生成DOM。网格生成表格结构,因此您可以使用selector
和getContent
属性获取单元格。
我必须说这不是正确的方法,因为现在你正在玩Dojo小部件的内部结构。如果他们曾经决定不使用表作为DOM结构,那么您的代码将无法正常工作。
但是我认为没有更好的方法来实现这一目标,最终你必须将Dojo单元转换为DOM节点(因为工具提示是基于DOM的)。您当然可以将工具提示连接到每个单元格,但我之前尝试过它并且它有点小问题(有时工具提示没有弹出)。
我还制作了一个JSFiddle来向您展示一个有效的例子。