2013-03-19 86 views
2

我有一个问题,我不知道如何解决它。我寻找解决方案,但他们没有工作。所以,我有一个带ItemTemplate的Datalist。我需要在onclick事件中添加google analytics到<a>标签。我尝试添加onclick事件像
Databinder.Eval双引号

onclick="_gaq.push(['_trackEvent', 'Homepage', 'Click on',<%#DataBinder.Eval(Container.DataItem,"URL")%>']);" <br /> 

但我得到一个黄色的错误屏幕与消息“..tag格式不正确”。 我也尝试用&qout;代替双qoutes,但没有成功。我也试过

onclick='<%# string.Format("_gaq.push(['_trackEvent','Homepage','Click on last awarded company','{0}']);", DataBinder.Eval(Container.DataItem, "URL") %>' <br /> 

但是这也行不通。
你有什么想法我怎么能解决这个问题?

回答

1

你真的应该在后面的代码中的“OnItemDataBound”事件中做这种复杂的数据绑定。看看relevant MSDN page

<asp:DataList id="ItemsList" OnItemDataBound="Item_Bound" runat="server"> 

代码背后:

public void Item_Bound(object sender, DataListItemEventArgs e) 
{ 
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) 
{ 
    // find your link 
    HyperLink link = (HyperLink)e.Item.FindControl("MyFirstHyperLink"); 

    // so something nice with your link here, for example add attributes. 
    string a = DataBinder.Eval(e.Item, "URL", "_gaq.push(['_trackEvent','Homepage','Click on last awarded company','{0}']);"); 
    link.Attributes.Add("onclick", a); 
} 
} 

免责声明:我没有实际测试此代码,所以你可能需要在这里和那里做出调整。它只是为了给你一个走向的想法。

+0

我以为我可以在aspx文件中做到这一点,而不用实际使用的方法。非常感谢。这工作:D – Coder 2013-03-19 08:53:16

+0

我个人喜欢OnItemDataBound方法比aspx模板更好,模板仅限于XML解析器可以解析哪些可以是一个严重的限制,当你使用引号和双引号和转义引号等:)很高兴你设法得到它的工作。 – Bazzz 2013-03-19 14:58:55

0

请问您可以在下面尝试?

<a href="#" onclick="_gaq.push(['_trackEvent', 'Homepage', 'Click on','<%#DataBinder.Eval(Container.DataItem,\"URL\")%>']);">Test</a> 
+0

我试过了。同样的错误:( – Coder 2013-03-19 08:53:42