C# 中继器高亮显示ItemCommand中的项

C# 中继器高亮显示ItemCommand中的项,c#,.net,repeater,C#,.net,Repeater,我有一个中继器,里面绑定了一些用户控件和面板。面板有一个OnClick事件并引发一个ItemCommand。我知道DataItem在回发过程中不会一直存在,因此在ItemCommand事件期间它将为空,我的要求是在单击特定usercontrol时更改其颜色(不使用Javascript)。有人有主意吗?您可以尝试在单击itemDataBound事件时更改特定UserControl的类名,如下所示 protected void DataList1_ItemDataBound(object sende

我有一个中继器,里面绑定了一些用户控件和面板。面板有一个
OnClick
事件并引发一个
ItemCommand
。我知道
DataItem
在回发过程中不会一直存在,因此在
ItemCommand
事件期间它将为空,我的要求是在单击特定usercontrol时更改其颜色(不使用Javascript)。有人有主意吗?

您可以尝试在单击itemDataBound事件时更改特定UserControl的类名,如下所示

protected void DataList1_ItemDataBound(object sender, 
                             DataListItemEventArgs e) 
{
     if (e.Item.ItemType == ListItemType.Item || 
         e.Item.ItemType == ListItemType.AlternatingItem)
     { 
         //Add eventhandlers for highlighting 
         //a DataListItem when the mouse hovers over it.
         e.Item.Attributes.Add("onmouseover", 
                "this.oldClass = this.className;" + 
                " this.className = 'EntryLineHover'"); 
         e.Item.Attributes.Add("onmouseout", 
                "this.className = this.oldClass;");
         //Add eventhandler for simulating 
         //a click on the 'SelectButton'
         e.Item.Attributes.Add("onclick", 
                this.Page.ClientScript.GetPostBackEventReference(
                e.Item.Controls[1], string.Empty));
     }
}

“不使用Javascript”为什么要避免JS.RepeaterCommandEventArgs e。如果启用EnableViewState=“true”,则在转发器的ItemCommand事件中Item不会为null。@sajanyamaharequirement@DevrajGadhaviEnableViewState始终为true,一旦您发回,中继器将不会保留任何数据项,我说的DataItem不仅仅是e.Item,而且您可以通过e.Item.FindControl(“controlid”)找到放在repeater中的任何控件。你不能吗?您还可以获得三个参数e.CommandName、e.CommandArgument和e.CommandSource。如果我误解了您的问题或要求,请原谅。但是如果当用户单击其他项目时,我需要清除先前突出显示的项目,该怎么办?这就是我想在itemCommand中执行此操作的原因