Подтвердить что ты не робот

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

Как я могу это достичь?

4b9b3361

Ответ 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);
    });
    });