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;
}
答案 0 :(得分:1)
这并不是像Repeater那样模板化的控件。
首先,您应该在FindControl
内ItemDataBound
找到您的LinkButton,并将CSS应用于找到的项目。
其次,您不会以这种方式为Repeater内的控件连接事件;而是处理Repeater的ItemCommand
事件。
您可以发布用于绑定转发器的代码吗?知道你的DataSource是什么是有用的,然后我可以发布一些有效的东西。
这篇文章也许有帮助 - Linkbutton inside Repeater for paging ASP.Net
答案 1 :(得分: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";
}