Невозможно установить выбранный стиль для LinkButton, который находится внутри элемента управления повторителем

У меня есть элемент управления повторителем на моей странице aspx:

 <asp:Repeater ID="Repeater1" runat="server">
                    <ItemTemplate>
                        <table>
                            <tr>
                                <td>
                                    <img src="pic/iconnew.jpg"/>
                                </td>
                                <td>
                                    <asp:LinkButton ID="linkbtTitle" runat="server" Text='<%#Eval("title")%>' CommandArgument='<%#Eval("id_notic")%>' OnCommand="linkbtTitle_Click" OnClick="Buttonlink_Click" ></asp:LinkButton>
                                </td>
                                <td>
                                    <asp:Label ID="LabelTime" runat="server" Text='<%#Eval("time")%>' CssClass="TimeMessage" ></asp:Label> 
                                </td>
                            </tr>
                        </table>
                    </ItemTemplate>
                </asp:Repeater>

Я хочу установить выбранный стиль для кнопки ссылки linkbtTitle по событию Buttonlink_Click:

<script runat="server">  
    protected void Buttonlink_Click(object sender, System.EventArgs e)  
    {
        linkbtTitle.ForeColor = System.Drawing.Color.HotPink;  
    }  

</script> 

Но есть ошибка, не удается разрешить символ linkbtTitle, почему ??? Просто потому, что кнопка ссылки находится внутри ретранслятора, поэтому я не могу получить к нему доступ таким образом, как описано выше.

Как ???, помогите !!!


person vyclarks    schedule 15.10.2013    source источник


Ответы (1)


Повторитель - это один из элементов управления привязкой к веб-данным, который, в общем, повторяет элементы. Так что обычно есть более одного элемента. Вот почему вы не можете получить к нему доступ напрямую. Он находится в другом NamingContainer, который является RepeaterItem ретранслятора.

Однако элемент управления, вызвавший событие, всегда является аргументом sender. Так что вам просто нужно его бросить:

protected void Buttonlink_Click(object sender, System.EventArgs e)  
{
    LinkButton linkbtTitle =  (LinkButton ) sender;       
    linkbtTitle.ForeColor = System.Drawing.Color.HotPink;  
}  
person Tim Schmelter    schedule 15.10.2013
comment
спасибо, это все, что мне нужно, так здорово. Жду из 10 минут, чтобы проголосовать за твой ответ. Еще раз спасибо! - person vyclarks; 15.10.2013