Есть ли способ увеличить длину всплывающей подсказки отображается на графике asp.net - PullRequest
3 голосов
/ 25 августа 2010

У меня есть диаграмма, которая отображает всплывающую подсказку (строку) при наведении курсора.Есть ли способ контролировать задержку / время, когда всплывающая подсказка отображается пользователю?

<asp:Chart runat="server" ID="Chart2" Width="340px" Height="265px">
        <!--Define Things in here-->
    </asp:Chart>

Backend:

    //define what rec is
    string tooltip = rec;
    Chart2.ToolTip = tooltip;

Ответы [ 5 ]

5 голосов
/ 09 января 2012

Я только что нашел довольно простое решение этой классической проблемы с помощью некоторого Javascript, который я позаимствовал здесь: http://bonrouge.com/~js_tooltip

Asp.NET отображает всплывающие подсказки в качестве атрибута заголовка на реальной HTML-страницегенерироваться.Вы можете воспользоваться этим фактом, чтобы применить любой стиль, который вам нравится, к подсказке, переопределив его двумя очень простыми функциями javascript.

function showTooltip(control) {
    var ttext = control.title;
    var tt = document.createElement('SPAN');
    var tnode = document.createTextNode(ttext);
    tt.appendChild(tnode);
    control.parentNode.insertBefore(tt, control.nextSibling);
    tt.className = "tooltipCss";
    control.title = "";
}
function hideTooltip(control) {
    var ttext = control.nextSibling.childNodes[0].nodeValue;
    control.parentNode.removeChild(control.nextSibling);
    control.title = ttext;
}

Далее вам нужно создать свой CSS для подсказки:

position:absolute; 
border:1px solid gray; 
width:300px; 
margin:1em; 
padding:3px; 
background: Red;

Наконец, вам нужно подключить JavaScript к вашему элементу управления

Chart2.Attributes.Add("onmouseover", "showTooltip(this)");
Chart2.Attributes.Add("onmouseout", "hideTooltip(this)");

Надеюсь, это поможет .... Я искал ПРОСТОЙ способ создания всплывающих подсказок для всех моих Asp.Netвещи на века.Я не люблю объявлять мой код всплывающей подсказки в отдельных диапазонах или как угодно, поскольку это не очень хорошо для моих динамически генерируемых вещей.Во всяком случае, я просто хотел добавить это где-нибудь в Интернете.Надеюсь, это кому-нибудь поможет.

3 голосов
/ 25 августа 2010

Извините, но, вероятно, нет.

Большинство всплывающих подсказок являются функцией браузера и отображают либо тег alt img, либо тег заголовка большинства элементов. Таким образом, контроль того, как долго будет отображаться эта подсказка, будет варьироваться от браузера к браузеру.

Возможно, что всплывающая подсказка находится под вашим контролем и представляет собой HTML-элемент, отображаемый с помощью javascript при наведении курсора, или диаграммы и всплывающая подсказка могут быть во Flash или Silverlight, но если это так, нам нужно увидеть ваш код .

0 голосов
/ 27 сентября 2016

Или вы можете использовать HoverMenuExtender из asp.net. Вы также можете изменить всплывающее содержимое / дизайн.

Пример кода здесь: http://asp -net-example.blogspot.com / 2009/11 / ajax-hovermenuextender-how-to-use.html

0 голосов
/ 20 января 2016

Чтобы добавить к ответу Равендарского: я использовал его код, но если бы во время события mouseout навести указатель мыши на содержимое всплывающей подсказки, IE выдаст необработанное исключение (никаких проблем в Chrome, я не проверял Firefox):

0x800a138f - Ошибка времени выполнения JavaScript: невозможно получить свойство 'nodeValue' с неопределенной или нулевой ссылкой

Так что я просто обернул реализацию hideTooltip в условную проверку на null, и все было хорошо в IE [и Chrome]:

function hideTooltip(control) {
    if (control.nextSibling.childNodes[0] != null) {
        var ttext = control.nextSibling.childNodes[0].nodeValue;
        control.parentNode.removeChild(control.nextSibling);
        control.title = ttext;
    }
0 голосов
/ 25 августа 2010

Наверное, нет.Если вам нужна большая гибкость, я бы порекомендовал воспользоваться подсказкой jQuery.

...