我研究了一种动态显示工具提示的好方法,我找到了OverLibWrapper,这正是我所需要的。
我将所有工具提示数据存储在custom configuration section中,工具提示在Page_Load
期间绑定到各自的控件。
我做了一个快速测试并且工作正常。当我意识到OverLibWrapper不能在masterpages上工作时,问题出现了。我们的网站使用了不少主页,因此不能选择它们。
我想知道是否有可以使用OverLibWrapper的东西。
编辑:
我正在寻找的是一个控件,用于在鼠标悬停时显示漂亮的工具提示,最好是立即像动态的overlib(没什么特别的,因为我只是显示原始文本),因为ASP.NET中的工具提示属性是不是很漂亮,需要一段时间才能出现。例如,假设我有一组消息:
class Message
{
string ctrlid, msgtodisplay;
}
加载页面时:
TooltipManager manager;
foreach(var m in messages)
{
Tooltip tltp=new Tooltip;
m.ControlID=m.ctrlid;
m.Message=m.msgtodisplay;
manager.AddTooltip(tltp);
}
所以基本上提供了Tooltip和TooltipManager的功能。
答案 0 :(得分:1)
答案 1 :(得分:1)
好吧,我终于解决了我的问题:
我使用this函数来查找任何控件(与主页配合使用):
public static Control FindControlRecursive(Control root, string id)
{
if (id == string.Empty)
return null;
if (root.ID == id)
return root;
foreach (Control c in root.Controls)
{
Control t = FindControlRecursive(c, id);
if (t != null)
return t;
}
return null;
}
这个方法:
public static void load(Page page, string pageFileName)
{
foreach (ConfiguracionElem elem in Configuracion.GetConfig(pageFileName).Tooltips)
{
WebControl ctrl = (WebControl)FindControlRecursive(page, elem.controlid);
if (ctrl == null)
throw new ControlNotFoundException("There's no control'"+elem.controlid+"'")
else
{
ctrl.Attributes.Add("onmouseover","return overlib('"+elem.message+"');");
ctrl.Attributes.Add("onmouseout","return nd();");
}
}
}
我手动将Overlib库添加到脚本文件夹,然后遍历我的自定义配置部分(存储我的工具提示数据)以动态添加javascript属性。