2

我有一个问题,我不知道如何解决它。我寻找解决方案,但没有奏效。所以,我有一个带有 ItemTemplate 的数据列表。我需要将 onclick 事件上的谷歌分析添加到 <a> 标签。我试图添加 onclick 事件,如

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

但这也行不通。
你知道我该如何解决这个问题吗?

4

3 回答 3

1

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

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

免责声明:我还没有实际测试过这段代码,所以你可能需要在这里和那里进行调整。它只是让您了解前进的方向。

于 2013-03-19T08:21:23.397 回答
0

你可以试试下面吗?

<a  href="#" onclick="_gaq.push(['_trackEvent', 'Homepage', 'Click on','<%#DataBinder.Eval(Container.DataItem,\"URL\")%>']);">Test</a>
于 2013-03-19T08:14:25.327 回答
0

我遇到了以下情况:我不得不重用一些从其他程序集中返回动态对象集合的函数。通常,可以使用 [assembly: InternalsVisibleTo("Some.Assembly")] 将动态对象发布到其他程序集,因为动态对象在其程序集内部。没有选择,我尝试了项目数据绑定方法解决方案来添加脚本,但动态对象在那里无法访问,即使我使用了 Eval。但是 Eval 在标记中起作用,并且出现了引号/撇号问题。我的解决方案是 HTML 转义:

onclick='<%# "doSomething(&apos;" + Eval("DataProperty") + "&apos;, this);"%>'
于 2020-06-16T05:38:59.600 回答