Альтернатива OverLibWrapper для отображения подсказок управления в ASP.NET - PullRequest
3 голосов
/ 13 октября 2010

Я нашел хороший способ динамического отображения всплывающих подсказок и нашел OverLibWrapper , который был именно тем, что мне было нужно.

У меня есть все данные всплывающей подсказки, хранящиеся в разделе пользовательской конфигурации , подсказки привязаны к соответствующим элементам управления во время Page_Load.

Я сделал быстрый тест и работал нормально. Проблема возникла, когда я понял, что OverLibWrapper не работает на мастер-страницах. На нашем веб-сайте используется довольно много мастер-страниц, поэтому их удаление не вариант.

Мне было интересно, есть ли что-нибудь вроде OverLibWrapper, которое я мог бы использовать.

EDIT:

Мне нужен элемент управления для отображения привлекательных всплывающих подсказок при наведении мыши, предпочтительно мгновенно, как 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.

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Ну, я наконец-то решил свою проблему:

Я использовал эту функцию для поиска любого элемента управления (работает с мастер-страницами):

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.

1 голос
/ 20 октября 2010

Посмотрите на это:

NotesTooltip

Я думаю, что это будет делать то, что вам нужно.

Вы думали о том, чтобы просто написать свойсвоя?Иногда я нахожу вещи других людей совершенно не подходящими для моих нужд.

...