2013-12-12 51 views
0

webforms/c#的新手我在onclick處理程序中獲取對象的引用。 對該對象的引用存在於Repeater_ItemDataBound方法中。 在curObj.CssClass =「XXXXX」運行後,類對象curObj被更新。 頁面呈現沒有應用於對象的CSS類。codebehind沒有在中繼器的鏈接按鈕上設置CssClass

我認爲這是由於LinkBut​​ton CSS不適用於最終得到渲染的錨標籤。

那麼我如何將CSS類應用到實際呈現的Anchor背後的代碼?

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

我寧願創建一個新的自定義控件,ta 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"; 
    } 

或如果你想設置後點擊:

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

發佈這個問題後,我看着它,並意識到我的邏輯中的缺陷。 –

1

這不像模板化控件如Repeater的工作方式。

首先,您應該在ItemDataBound之內執行FindControl以查找您的LinkBut​​ton,並將CSS應用於找到的項目。其次,你不要以這種方式在Repeater內連接控件的事件;而是處理Repeater的ItemCommand事件。

你可以發佈你用來綁定中繼器的代碼嗎?知道你的DataSource是什麼是有用的,然後我可以發佈一些有用的東西。

此信息可能有所幫助 - Linkbutton inside Repeater for paging ASP.Net