2013-12-12 3 views
0

Новое в webforms/C# Я получаю ссылку на объект в обработчике onclick. Ссылка на объект существует в методе Repeater_ItemDataBound. После запуска curObj.CssClass = "XXXXX" объект класса curObj обновляется. Страница отображается без класса CSS, применяемого к объекту.codebehind не устанавливает CssClass на кнопку ссылки в ретрансляторе

Я предполагаю, что это связано с тем, что CSS LinkButton не применяется к тегу Anchor, который отображается в конце.

Как я могу применить класс CSS к фактическому визуализированному якорю от кода позади?

// my aspx 
<asp:Repeater ID="Repeater1" runat="server" onItemDataBound="Repeater_ItemDataBound"> 
    <ItemTemplate> 
    <asp:LinkButton ID="my_btn" runat="server" OnCommand="cmdSelect_click" CommandArgument='<%# Eval("value") %>'><%# Eval("value") %></asp:LinkButton> 
    </ItemTemplate> 
</asp:Repeater> 



// my code behind 
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (((MyObject)e.Item.DataItem).value == CurrentValue) 
    { 
    curObj.CssClass = "someCssClassHere"; 
    } 
} 

protected LinkButton curObj; 
protected void cmdSelect_click(object sender, CommandEventArgs e) 
{ 
    curObj = (LinkButton)sender; 
    CurrentValue = int.Parse(e.CommandArgument.ToString())-1; 
} 
+0

Я бы предпочел создать новый пользовательский элемент управления, который kes модель и генерирует код, который повторяет данные модели. –

ответ

1

Я не понимаю, когда/где вы хотите установить CssClass ..

Если вы хотите установить его в ItemDataBound:

protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
    { 
     LinkButton my_btn = (LinkButton)e.Item.FindControl("my_btn"); 
     if (my_btn != null) my_btn.CssClass = "someCssClassHere"; 
    } 

или если вы хотите установить после Click:

protected void cmdSelect_click(object sender, CommandEventArgs e) 
    { 
     LinkButton my_btn = (LinkButton)sender; 
     my_btn.CssClass = "someCssClassHere"; 
    } 
+0

После публикации этого вопроса я просмотрел его и осознал недостаток в своей логике. –

1

Это не совсем так, как работают шаблонные элементы управления, такие как работа ретранслятора.

Во-первых, вы должны сделать FindControl внутри ItemDataBound, чтобы найти свой LinkButton и применить CSS к найденному элементу.

Во-вторых, вы не подключаете события к элементам управления внутри ретранслятора таким образом; вместо этого вы обрабатываете событие ItemCommand ретранслятора.

Можете ли вы опубликовать код, который вы используете для привязки ретранслятора? Было бы полезно узнать, что такое ваш DataSource, тогда я могу опубликовать что-то, что работает.

Это сообщение может помочь, а также - Linkbutton inside Repeater for paging ASP.Net

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