【问题标题】:tooltip computed links for asp button after button is clicked单击按钮后,工具提示为 asp 按钮计算链接
【发布时间】:2015-05-19 07:01:25
【问题描述】:
<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) { .... })时,我都会计算并获取一些整数(ID),这些整数包含为List&lt;ExpressionListDictionary&gt;。 (asp:LinkBut​​ton 包含在 asp:ListView 中)

我想做的是将工具提示更改为动态工具提示,其中包含所有已获得的 ID 作为链接。 (像这样:http://jsfiddle.net/IrvinDominin/jLkcs/5/ - 但在我的情况下,我确实需要首先单击用于计算 ID 的按钮,然后我需要从代码中更改工具提示文本,因为它需要显示相应的 ID,作为链接如果可能的话)

我怎样才能做到这一点?

【问题讨论】:

  • 后面的代码也可以加吗?

标签: c# jquery asp.net


【解决方案1】:

如果你有一个类(或 id 或其他东西)来识别按钮,你可以制作一个 jQuery 文档就绪函数来将带有 id 的工具提示更改为包含 id 的链接。 我修改了你的小提琴: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";
    }
    

    【讨论】:

    • 如何使 LinkBut​​ton 的 ToolTip 字符串属性包含一些 html 标签/css 属性等?只需将它们添加在双引号内?我确实需要创建这个 ToolTip 让它看起来更像一个对话框,我所有的 Id 都需要像一些链接。
    • HTML 工具提示规范不允许其中包含任何 HTML,只有当您用鼠标悬停元素时显示的纯文本
    【解决方案3】:

    如果 CommandEventArgs CommandName 与您定义的相同,您可以设置您的发件人属性

    public void LinkButton_Command(Object sender, CommandEventArgs e)
        {
            if (e.CommandName.Equals("showIds"))
            {
            //
            }
        }
    

    这是一个工作示例,这将工作,不计入使用的用户控件 LinkBut​​ton:

    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 在页面本身上生成工具提示。

      1. 为您所有已获得的 ID(逗号分隔)添加一个隐藏字段到 asp:ListView
      2. 在服务器上的 ItemCreated 事件中填充此隐藏
      3. 为您的链接按钮添加一个类,例如“ShowHyperlinkOnHover”
      4. 将 mouseenter 事件绑定到 jquery 类 ShowHyperlinkOnHover document.ready 函数,这将动态生成工具提示。然后会显示鼠标悬停工具提示。

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

      【讨论】:

        猜你喜欢
        • 2012-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多