Есть ли способ добавить событие onclick в элемент управления сервером Label ASP.NET?
Я хотел сделать что-то вроде этого:
<asp:Label ID="lblMyLabel" onclick="lblMyLabel_Click" runat="server">My Label</asp:Label>
Я знаю, что в Javascript я могу сделать:
<span onclick="foo();">My Label</span>
Итак, мне интересно, почему я не могу сделать это с помощью объекта Label.
Ответы
Ответ 1
Вы можете использовать атрибуты для добавления обратного вызова на стороне клиента onclick.
Я не знал, что вы можете сделать это в тегах span, но если это сработает, вы можете добавить 'onclick' на lblMyLabel.Attributes.Add("onclick", "foo();");
Но foo();
должна быть javascript-функцией на стороне клиента.
System.Web.UI.WebControls.Label
НЕ имеет события сервера OnClick. Вы можете изучить использование AJAX, если вы хотите обратный вызов сервера с приведенным выше примером.
Вы также можете использовать LinkButton
, как говорят другие. Вы можете сделать это не похожим на ссылку с помощью CSS, если это именно то подчеркивание, о котором вы беспокоитесь.
ASPX:
<asp:LinkButton ID="LinkButton1" runat="server"
CssClass="imjusttext" OnClick="LinkButton1_Click">
LinkButton
</asp:LinkButton>
CSS
a.imjusttext{ color: #000000; text-decoration: none; }
a.imjusttext:hover { text-decoration: none; }
Ответ 2
В вашем вопросе не указывается, хотите ли вы повысить событие клика на сервере (VB или С#) или на клиенте (javascript.) Если вы ищете событие на стороне сервера, вы должны использовать кнопку ссылки с css, что делает ссылку отображаемой в качестве метки. Затем вы можете использовать кнопку щелчка на серверной кнопке. Если вы ищете событие клики на стороне клиента - просто введите его в свою разметку управления сервером
asp:label id="MyLabel" runat="server" onclick="javascript:alert('hello');" Text="Click Me";
ASP.NET выдает дополнительные атрибуты в создаваемой HTML-разметке.
Ответ 3
Вы можете сделать это в коде в page_load, например:
void Page_Load(object sender, EventArgs e)
{
lblMyLabel.Attributes.Add("onclick",
"javascript:alert('ALERT ALERT!!!')");
}
Ответ 4
Я думаю, что вы можете, но это клиентский обработчик onclick, а не сервер. Он будет жаловаться на то, что атрибут не поддерживается (или некоторые из них), но я думаю, что он правильно отображается. Если вы хотите обработчик на стороне сервера, я думаю, вам нужно сделать LinkButton.
Ответ 5
Насколько я знаю, это невозможно. Элемент управления меткой испускает элемент <span
> , который является "unclickable" на стороне сервера. Вам нужно будет заменить элемент управления Label на LinkButton.
Ответ 6
Если вы хотите событие onclick, почему бы вам не использовать ссылку, которая имеет событие onclientclick
:
<asp:linkbutton id="lblMyLink" onclientclick="lblMyLink_Click" runat="server">My Label</asp:linkbutton>
Вы можете использовать CSS, чтобы ссылка выглядела так, как вам хочется.
Ответ 7
Другим взломом будет использование скрытой ссылки или кнопки со стилем = "display: none;" и вызвать щелчок на серверном элементе управления из функции javascript в промежутке.
Что-то вроде этого:
<asp:linkbutton id="lblMyLink" onClick="lblMyLink_Click" runat="server" style="display:none;">My Link</asp:linkbutton>
<span onclick="document.getElementById('lblMyLink').click();">My Label</span>
Ответ 8
вы всегда можете развернуть свой собственный элемент управления, который создает диапазон, с стандартным javascript с поддержкой .net, но, как было сказано ранее, с помощью метки ссылок с классом CSS было бы проще
Ответ 9
Просто чтобы ответить на эту проблему,
Я использовал ярлык на моей странице .aspx, который должен был быть видимым только в моем шаблоне ItemList, если в наборе данных есть дочерние записи.
Я добавил функцию onclick к метке:
moreOptionsLabel.Attributes.Add( "onclick" , string.Format( "toggle_visibility ('{0}')", div.ClientID));
в моем .cs файле. Теперь он будет контролировать тег div на странице .aspx, чтобы отображать или скрывать записи - потому что onclick указывает на функцию javascript на стороне клиента. Обратите внимание на div.ClientID, который делает это работоспособным в datalist.
Как отмечалось выше - тег span действительно становится функциональным с помощью "onclick" . И поскольку управление меткой отображается как диапазон после запроса страницы, использование Addtribute.Add( "onclick" .... работает.
Результат - показать/скрыть функциональность данных без выполнения обратной передачи. Если вы используете элементы управления LinkButton или simlar - возврат назад и перезагрузка страницы неизбежны - если вы не хотите попасть в какой-либо материал Ajax.
ПРИМЕЧАНИЕ. Тег span не будет выглядеть интерактивным, если вы не нарисуете его с помощью подчеркивания и курсора.
Кредит на эту идею исходит от Уилла Асрири на http://www.willasrari.com/blog/display-nested-repeaters-and-gridviews-asynchronously/000292.aspx
Ответ 10
Вам нужно создать объект класса, который наследуется от метки и обработчика события onclick, который будет методом yourslef и использовать ваш объект как пользовательский ярлык.