2013-03-19 4 views
2

У меня проблема, и я не могу понять, как ее решить. Я ищу решения, но они не сработали. Итак, у меня есть Datalist с ItemTemplate. Мне нужно добавить google analytics on onclick к <a> тегов. Я пытался добавить событие OnClick, как
Databinder.Eval двойные кавычки

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

, но я получаю желтый экран ошибки с сообщением «..tag не отформатирован правильно». Я также попытался заменить двойные qoutes на &qout;, но не успел. Я также пробовал

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

+0

Мне лично нравится метод OnItemDataBound лучше, чем шаблон aspx. Шаблон ограничен чем-то XML синтаксический анализатор может анализировать, что может быть серьезным ограничением при использовании котировок и двойных кавычек, а также экранированных кавычек и т. д. :) Рад, что вам удалось заставить его работать. – Bazzz

0

Не можете подойти сразу же?

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

Я пробовал. Та же ошибка :( – Coder

Смежные вопросы