私は次のものを持っています<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);
}
}
}
}
リピーターに関する多くのブログのスレッドを読み、そのアイテムを見つけましたが、私の問題を解決したものが見つかりません。