2010-10-13 4 views
3

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

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

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

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

EDIT:

Что я ищу это контроль, чтобы отобразить симпатичные всплывающие подсказки при наведении курсора мыши предпочтительно мгновенно, как overlib (ничего фантазия, потому что я просто отображая необработанный текст) в динамическом пути, потому что свойство tooltip в 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); 
} 

Так что в основном то, что предлагает функциональность подсказки и ToolTipManager.

ответ

1

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

Я использовал this функцию, чтобы найти какой-либо контроль (работает с MasterPages):

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();"); 
     } 
    } 
} 

I добавила библиотеку Overlib вручную в папку сценария, затем я выполнил итерацию в разделе «Пользовательская настройка» (где хранятся мои данные всплывающей подсказки), чтобы добавить атрибуты javascript d ynamically.

1

Взгляните на это:

NotesTooltip

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

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

+0

Спасибо за ваш ответ, но я не могу заставить образец работать, после преобразования VS он сообщает мне, что некоторые файлы отсутствуют. Я попытался создать новый проект, но при попытке заставить элементы управления работать, я получаю много ошибок. –

+0

hhhmmmm .... не преобразовал его сам. Вы считали, что пишете свои собственные? – jimplode

+0

Я бы не знал, как это сделать. Я немного новичок в веб-программировании. –