我有一个包含几个面板的中继器。我注意到<asp:Panel>
没有onmouseover属性。我已经读到,我可以通过在page_load中调用来将属性添加到面板:
PanelID.Attributes.Add("onmouseover", "Script to Run");
问题是,我在一个中继器中,PanelID是由asp.net生成的,就像ContentPlaceHolder_ctl01_myID_0一样,所以不仅很难弄清楚,而且VS2010不会将其识别为正确的对象并在其上抛出错误,加上我必须将其附加到每一项上,因此我需要使用for或foreach,但我不知道要迭代什么。有没有像这样的方法
foreach(childcontrol in Repeater.ChildControlsISpecificallyNeedPossiblyIdentifiedBySomeID)
{
childcontrol.Attributes.Add("onmouseover", "Script to Run");
}
在Page_Load eventhandler中用C#做这件事?我还想在面板上运行客户端的onload、onmouseclick和onmouseout,所以我也想附加这些属性。
发布于 2011-02-16 10:34:07
跳出框框,您可以在javascript中附加javascript事件侦听器,而不是使用ASP.NET内联指定onmouseover
-attribute。
为面板提供一个CSS类:
<asp:Panel CssClass="panel"></asp:Panel>
使用jQuery,绑定事件处理程序的语法如下所示:
$(".panel").mouseover(functionToRun);
如果你没有使用jQuery,你将需要更多的代码,但是我相信你已经明白了。
发布于 2011-02-16 10:30:36
面板在客户端使用div
表示,您可以使用SomePanel.ClientID
获取客户端id。但是,如果您指的是触发面板,则始终可以在JavaScript中使用this
不会将所有事件处理程序放在每个元素上。
发布于 2011-02-16 10:35:06
将属性添加到面板中,以便在中继器中找到控件,因为每次绑定行时都会调用此事件,这样您就不必调用foreach。
https://stackoverflow.com/questions/5015196
复制相似问题