codeehind没有在中继器中的链接按钮上设置CssClass



webforms/c新手#我在onclick处理程序中获得了对该对象的引用。对对象的引用存在于Repeater_ItemDataBound方法中。curObj.CssClass="XXXXX"运行后,类对象curObj将更新。页面呈现时没有将CSS类应用于对象。

我认为这是由于LinkButton 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;
}

我不知道你想在何时何地设置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";
    }

这不是Repeater等模板控件的工作方式。

首先,您应该在ItemDataBound中执行FindControl以找到LinkButton,并将CSS应用于找到的项。

第二,您不会以这种方式为Repeater内部的控件连接事件;而是处理中继器的ItemCommand事件。

你能发布你用来绑定中继器的代码吗?知道你的DataSource是什么会很有用,然后我可以发布一些有效的东西。

这篇文章可能也有帮助-中继器内的链接按钮用于分页ASP.Net

最新更新