2012-11-27 64 views
1

我试图将GA跟踪代码添加到数据控件内部的超链接中,使用下面的代码我可以添加但随后所有的GA跟踪事件将显示所有的PDF文件将一样的名字。下面是代码将属性添加到DataList控件中的HyperLink控件

<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> 

当我尝试添加附加代码如下

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

它产生的错误,因为我不能绑定评估和演示这个属性。

我怎么能结合这个语法像我们这样做的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 ')"); 
     } 

} 

回答

1

更新:议决的解决方案,我没有使用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); 
    } 

    } 
相关问题