2012-02-15 3 views
1

Я собираюсь иметь listview со ссылками, которые привязаны к базе данных. Я хочу отслеживать, когда эта ссылка будет нажата. Это будет так, что я могу определить, на какие ссылки больше всего нажимают. Я попытался сделать это с помощью кнопки linkbutton, но столкнулся с проблемой, когда цвет не меняется при его посещении. Я сомневаюсь, что могу сделать это с помощью гиперссылки, поскольку гиперссылка не попадает на сервер. Любые предложения о том, как это сделать.Сохранить время, нажав на гиперссылку/linkbutton

Это, как я сделал LinkButtons

<asp:ListView ID="lstvTopTen" runat="server"> 
    <ItemTemplate> 

     <tr> 
      <td width="100%"> 
       <asp:LinkButton ID="lbtnUrlLink" runat="server" Text='<%# Bind("NewsTitle") %>' 
        CommandArgument='<%# Bind("NewsUrl") %>' onclick="lbtnUrlLink_Click" 
        OnDataBinding="lbtnUrlLink_DataBinding" CssClass="newslink" /> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("NewsDescriptionDisplay") %>' /> 
      </td> 
     </tr> 

    </ItemTemplate> 
</asp:ListView> 

вот мой CSS

.newslink 
{ 
    display:block; 
    margin: 15px 0 0 0; 
    text-decoration: none; 
    font-size:1.2em; 
    line-height: 1.8em; 
    border-bottom:1px solid #CCC; 
} 

.newslink:visited 
{ 
    color: Red; 
} 

ответ

0

Так вот как я в конечном итоге делает это.

<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%# Bind("NewsUrl") %>' Target="_blank" 
        onclick="countClick(this.href);" CssClass="newslink" Text='<%# Bind("NewsTitle") %>' /> 



<script type="text/javascript" language="javascript"> 

    function countClick(name) { 

     PageMethods.CountClick(name); 

    } 

</script> 
-1

Посмотрите ответ на этот пост. Вы довольно близки.

.newslink a:visited 
{ 

} 

Link

+0

Я не могу заставить это работать? –

+0

Я могу заставить наведение работать, но я не могу посетить или активно. зависание работает только при выполнении ".newslink: hover" Другие не работают так, как я это делаю. –

1

Проблема заключается в том, что при создании LinkButton, тонированный код будет иметь Javascript вызова функции вместо URL на другую страницу. Поэтому браузер не сохранит их в своей истории. Также : посетил псевдокласс не будет работать в этом случае, так как он работает только для URL-адресов не вызовы функций javascript!

Чтобы обойти это, вам может потребоваться создать новую функцию javascript для захвата, когда пользователь нажал на ссылку, а затем измените стиль.

Например:

<script> 
function ChangeLinkColour() 
{ 
    document.getElementById('myLink').style.color = "Black"; 
    return false; 
} 
</script> 

Ваш LinkButton будет выглядеть следующим образом:

<asp:LinkButton ID="myLink" runat="server" Text="Click me" OnClientClick="return ChangeLinkColour();" CssClass="a"></asp:LinkButton> 
+0

, посмотрев более подробно, вы совершенно правы! – Etch

+0

Было бы более целесообразным иметь гиперссылку с кодом javascript, чтобы добавить ее в базу данных для кликов? Было бы неплохо, если бы ссылка сохранила щелчок по цвету. Если я сделаю этот метод javascript, он не сохранит его. –

+0

Ну, если вы должны сохранить посещенный цвет, тогда вы можете изменить эту ссылку на гиперссылку. Затем в href добавьте значение querystring в конец. Таким образом, на вашем pageload проверьте значение этого запроса и увеличьте время, в течение которого эта ссылка была нажата в базе данных. Как вы заметили, это может не дать вам точное количество раз нажатых, хотя ... – skub

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