繁体   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