簡體   English   中英

codebehind沒有在轉發器中的鏈接按鈕上設置CssClass

[英]codebehind is not setting CssClass on a link button in a repeater

webforms / c#的新手我在onclick處理程序中獲得了對象的引用。 Repeater_ItemDataBound方法中存在對該對象的引用。 在curObj.CssClass =“XXXXX”運行后,類對象curObj被更新。 頁面呈現時沒有將CSS類應用於該對象。

我假設這是由於LinkBut​​ton CSS不適用於最終渲染的Anchor標記。

那么如何從后面的代碼中將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;
}

這並不是像Repeater那樣模板化的控制工作。

首先,您應該在ItemDataBound執行FindControl以查找您的LinkBut​​ton,並將CSS應用於找到的項目。

其次,你不會以這種方式為Repeater內的控件連接事件; 而是處理Repeater的ItemCommand事件。

你可以發布你用來綁定轉發器的代碼嗎? 知道你的DataSource是什么是有用的,然后我可以發布一些有用的東西。

這篇文章也許有幫助 - 在Repeater內部的Linkbutton用於分頁ASP.Net

我不明白你想要設置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";
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM