Подсказка вычисленных ссылок для кнопки asp после нажатия кнопки
<ItemTemplate>
<tr>
<asp:LinkButton ID="btnID" runat="server"
ToolTip='The calculated IDs are: ' OnCommand="showIds"
CommandArgument='<%# Convert.ToInt32(Eval("Year")) + "," +
Convert.ToInt32(Eval("Month")) %>'>
<%# Convert.ToInt32(Eval("Count")) - Convert.ToInt32(Eval("LittleCount"))%>
</asp:LinkButton>
</tr>
</ItemTemplate>
Как вы можете заметить, текст всплывающей подсказки статичен. В коде позади я вычисляю и получаю целые числа (идентификаторы) каждый раз, когда нажата вышеприведенная кнопка (protected void showIds(object sender, CommandEventArgs e) { .... }
), содержащаяся как List<ExpressionListDictionary>
. (asp: LinkButton содержится внутри asp: ListView)
Что я хочу сделать, это изменить подсказку на динамическую, содержащую все уже полученные идентификаторы в виде ссылок. (Что-то вроде этого: http://jsfiddle.net/IrvinDominin/jLkcs/5/ - но в моем случае мне нужно сначала нажать кнопку для расчета идентификаторов, и после этого мне нужно будет изменить всплывающую подсказку текст из кода, поскольку он должен показывать соответствующие идентификаторы, в качестве ссылок, если это возможно)
Как я могу это достичь?
Ответы
Ответ 1
Если у вас есть класс (или идентификатор или что-то еще), чтобы идентифицировать кнопки, вы можете сделать функцию документа jQuery ready, чтобы изменить подсказку с идентификаторами на ссылку, содержащую идентификаторы.
Я изменил вашу скрипку: http://jsfiddle.net/jLkcs/545/
$(document).ready(function () {
$(".myLinkButton").each(function() {
createlink(this);
});
});
function createlink(obj){
var ids= $(obj).attr('title');
var linkHtml="<a href='javascript:alert(" + ids + ")'>link</a>"
$(obj).attr('title',linkHtml);
}
Ответ 2
Почему бы просто не отрегулировать подсказку в кодебе во время обратной передачи?
protected void showIds(object sender, CommandEventArgs e)
{
((LinkButton)sender).ToolTip = "blahblah";
}
Ответ 3
Вы можете установить атрибуты отправителя, если CommandEventArgs CommandName совпадает с вашим определенным
public void LinkButton_Command(Object sender, CommandEventArgs e)
{
if (e.CommandName.Equals("showIds"))
{
//
}
}
Вот рабочий пример, это будет работать, не считая, в каком пользовательском управлении LinkButton используется:
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : Page
{
public string btnNoTooltip = "No IDs are calculated";
public string btnTooltip = "The calculated IDs are:";
protected void Page_Load(object sender, EventArgs e)
{
}
public void LinkButton_Command(Object sender, CommandEventArgs e)
{
if (e.CommandName.Equals("LinkButtonOrder"))
{
LinkButton lkTrigger = (LinkButton)sender;
if (lkTrigger.ToolTip.Equals(btnNoTooltip))
{
lkTrigger.ToolTip = btnTooltip + " " + e.CommandArgument;
}
else
{
lkTrigger.ToolTip += " " + e.CommandArgument;
}
Random random = new Random();
lkTrigger.CommandArgument = random.Next(0, 100).ToString();
Label1.Text = "Triggered: " + e.CommandName + " with Argument " + e.CommandArgument;
}
}
}
Разметка:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<h3>LinkButton Command Event Example</h3>
<asp:LinkButton id="LinkButton1"
Text="Order Item Here"
CommandName="LinkButtonOrder"
ToolTip='No IDs are calculated'
CommandArgument="01"
OnCommand="LinkButton_Command"
runat="server"/>
<br />
<asp:LinkButton id="LinkButton2"
Text="Or Order Item Here"
CommandName="LinkButtonOrder"
CommandArgument="02"
ToolTip='No IDs are calculated'
OnCommand="LinkButton_Command"
Runat="server"/>
<br />
<br />
<asp:Label id="Label1" runat="server"/>
<asp:PlaceHolder id="plhInjectId" runat="server" Visible="false"></asp:PlaceHolder>
</asp:Content>
Ответ 4
Вы можете использовать jquery для создания подсказки на самой странице.
- Добавьте скрытое поле для всех уже полученных идентификаторов (с запятой) в asp: ListView
- Заполнять это скрытое в событии ItemCreated на сервере
- добавьте класс к вашей ссылке, скажите "ShowHyperlinkOnHover"
-
Привязать событие mouseenter к классу ShowHyperlinkOnHover document.ready функции jquery, это будет динамически генерировать подсказку. а затем на подсказке "Мышь над инструментом".
$(document).ready(function () {
$(document).on("mouseenter", ".ShowHyperlinkOnHover", function(this){
// 2 is index of hidden field having comma seperated Ids
var dynaToolTip;
$(this).parent("td:nth-child(2)").split(',').each(
function(oneId) dynaToolTip=dynaToolTip+ anyFomationLogic(oneId);
);
$(this).attr('title',dynaToolTip);
});
});