【发布时间】:2013-02-05 18:18:38
【问题描述】:
我有以下<asp:Repeater>:
<asp:Repeater ID="repMenuParent" runat="server" DataSourceID="odsMenuParent" OnItemCommand="repMenuParent_OnItemCommand" OnItemDataBound="repMenuParent_OnItemDataBound" >
<ItemTemplate>
<asp:Button id="btnRepeaterParent" runat="server" SkinID="btnAgroquimicos" CssClass="celdasMenusDinamicas" Text='<%# Eval("NOMBRE") %>' CommandName='<%# Eval("NOMBRE") %>' />
</ItemTemplate>
</asp:Repeater>
当 commandEvent 被触发时,我使用 commandName 和 uniqueId 建立了一个会话:
protected void repMenuParent_OnItemCommand(object source, RepeaterCommandEventArgs e)
{
Session.Add("nombreSubMenuAgro", e.CommandName);
String id = e.Item.UniqueID;
Session.Add("souceId", id);
}
问题如下:我需要更改用户点击的中继器内按钮的前景色。在开始时,所有按钮(中继器中的项目)都是灰色的。当点击某人时,我需要将其前景色更改为红色(如面包屑)。
我试图在itemDataBound 中找到该项目并比较 uniqueId 但它不起作用,我不知道如何找到单击以更改前景色的特定项目:
protected void repMenuParent_OnItemDataBound(object Sender, RepeaterItemEventArgs e)
{
String sessionID = "";
Button btnRepeater;
if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
{
btnRepeater = (Button)e.Item.FindControl("btnRepeaterParent");
if (btnRepeater != null)
{
if(btnRepeater.UniqueID.Equals(sessionID))
{
btnRepeater.ForeColor = System.Drawing.Color.FromArgb(69, 187, 32);
}
}
}
}
我已经阅读了许多关于中继器的博客主题并找到了它的项目,但找不到任何可以解决我的问题的帖子,请帮帮我吗?
【问题讨论】:
-
您是否在 _OnItemCommand 事件被触发后重新绑定网格?
-
@user2044081 您在哪里检索
Session["souceId"]值? -
不,没有重新绑定,而是转发器而不是网格。
-
Marcus,我省略了代码的和平。在 itemdataBOund 中,将 Session["sourceId"] 分配给 de var sessionID。像这样:SessionID = Session["souceId"].ToString();