简体   繁体   English

向DataList控件内的HyperLink控件添加属性

[英]Add attribute to HyperLink Control inside DataList control

I am trying to add GA Tracking code to Hyperlink which is inside Datalist Control, With the below code i am able to add but then all the GA Tracking event will show all pdf file will the same name. 我正在尝试将GA跟踪代码添加到Datalist控件内部的超链接中,使用以下代码,我可以添加以下代码,但所有GA跟踪事件将显示所有pdf文件都具有相同的名称。 Below is the code 下面是代码

<asp:DataList ID="dlTournamentMenu" runat="server" RepeatColumns="4"  
    CellSpacing="5" RepeatLayout="Table" SeparatorStyle-Width="10" CellPadding="4" 
    BorderWidth="0"  >
    <ItemTemplate>
    <div class="uc4TournamentLinks" >
        <asp:HyperLink ID="hylMenuItem"  runat="server" NavigateUrl='<%# Eval("PageInternalLinkURL") %>' ToolTip='<%# Eval("PageName") %>' onclick="_gaq.push(['_trackEvent', 'Downloads', 'PDF', 'PDF File Downloaded']);" Target='<%# Eval("PageWindow") %>' BorderWidth="0px" Font-Underline="False" >
            <asp:Label ID="lblTourTitle" CssClass="uc4TournamentLinksColor" runat="server" Text='<%# Eval("PageName") %>'></asp:Label>
        </asp:HyperLink>
    </div>
    </ItemTemplate>
</asp:DataList> 

When i try to add add code as below 当我尝试添加添加代码如下

onclick="_gaq.push(['_trackEvent', 'Downloads', 'PDF', '<%# Eval("PageWindow") %>']);"

it generates error as i cant bind Eval to this property. 由于无法将Eval绑定到此属性,因此会产生错误。

How can i bind this grammatically like we do it for Repeater control as example below 我如何像我们为Repeater控件所做的那样在语法上进行绑定,如下例

    protected void gvUsers_RowDataBound(object sender, GridViewRowEventArgs e)
    {

        //LOCK USER
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            LinkButton lbLockUser = e.Row.FindControl("lnkBtnLockUser") as LinkButton;
            if (lbLockUser != null)
                ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(lbLockUser);

            lbLockUser.Attributes.Add("onclick", "javascript:return " +
            "confirm('Are you sure you want to lock this User ')");
        }

} 

UPDATED: RESOLVED solution i did it using OnItemDataBound event complete working code below 更新:已解决的解决方案,我使用下面的OnItemDataBound事件完整的工作代码来完成

<asp:DataList ID="dlTournamentMenu" runat="server" OnItemDataBound="Item_Created" RepeatColumns="4" CellSpacing="5" RepeatLayout="Table" SeparatorStyle-Width="10" CellPadding="4" BorderWidth="0">
    <ItemTemplate>
    <div class="uc4TournamentLinks" >
        <asp:HyperLink ID="hylMenuItem"  runat="server" NavigateUrl='<%# Eval("PageInternalLinkURL") %>' ToolTip='<%# Eval("PageName") %>' Target='<%# Eval("PageWindow") %>' BorderWidth="0px" Font-Underline="False" >
            <asp:Label ID="lblTourTitle" CssClass="uc4TournamentLinksColor" runat="server" Text='<%# Eval("PageName") %>'></asp:Label>
        </asp:HyperLink>
    </div>
    </ItemTemplate>
</asp:DataList> 


   protected  void Item_Created(Object sender, DataListItemEventArgs e)
    {
    if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
    {

        // Retrieve the Hyperlink control in the current DataListItem.
        HyperLink Link = (HyperLink)e.Item.FindControl("hylMenuItem");
        string page = ((DataRowView)e.Item.DataItem).Row.ItemArray[1].ToString();
        string GATrakking = "_gaq.push(['_trackEvent', 'Downloads', 'PDF', '"+ page.Trim() +"']);";
        Link.Attributes.Add("onClick", GATrakking);
    }

    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM