【问题标题】:Alternative to OverLibWrapper for displaying control tooltips in ASP.NETOverLibWrapper 的替代方案,用于在 ASP.NET 中显示控件工具提示
【发布时间】:2010-12-14 07:37:40
【问题描述】:

我研究了一种动态显示工具提示的好方法,我找到了OverLibWrapper,这正是我所需要的。

我将所有工具提示数据存储在custom configuration section 中,工具提示在Page_Load 期间绑定到它们各自的控件。

我做了一个快速测试并且工作正常。当我意识到 OverLibWrapper 不适用于母版页时,问题就出现了。我们的网站使用了很多母版页,因此不能将它们删除。

我想知道是否有像 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 功能的东西。

【问题讨论】:

    标签: c# asp.net tooltip custom-sections


    【解决方案1】:

    看看这个:

    NotesTooltip

    我认为这将满足您的需求。

    你有没有想过只写你自己的?有时我会发现其他人提供的东西永远无法满足我的需求。

    【讨论】:

    • 感谢您的回答,但我无法让示例工作,在 VS 转换后它告诉我缺少一些文件。我尝试创建一个新项目,但在尝试使控件正常工作时遇到很多错误。
    • 我真的不知道该怎么做。我对网络编程有点陌生。
    • 给我你的规格,你想如何使用它,我会为你设计一些简单的东西,让你继续前进。
    【解决方案2】:

    好吧,我终于解决了我的问题:

    我使用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 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-17
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多