Добавление атрибута onmouseover в <asp: Panel> в <asp: Repeater> - PullRequest
1 голос
/ 16 февраля 2011

У меня есть повторитель, содержащий несколько панелей.Я заметил, что нет атрибута onmouseover <asp:Panel>.Я прочитал, что я могу добавить атрибут на панель, вызвав в 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");
}

, сделать это в C # в обработчике событий Page_Load?Я хочу запустить на панелях onload, onmouseclick и onmouseout на стороне клиента, поэтому я тоже хочу прикрепить эти атрибуты.

Ответы [ 4 ]

0 голосов
/ 16 февраля 2011

Вы можете рассмотреть возможность использования события ItemDataBound.

protected void myRepeater_ItemDataBound(object source, RepeaterCommandEventArgs e) {   
    if(e.Item.ItemType == ListItemType.Item){
       Panel pnl = (Panel)e.Item.FindControl("myPanel");   
       pnl.Attributes.Add"onMouseOver", "yourFnctionName()");
    }
}
0 голосов
/ 16 февраля 2011

Не ограничиваясь указанием встроенного атрибута onmouseover с помощью ASP.NET, вы можете присоединить прослушиватели событий javascript в javascript .

Дайте панели класс CSS:

<asp:Panel CssClass="panel"></asp:Panel>

Используя jQuery, синтаксис для привязки обработчиков событий будет выглядеть следующим образом:

$(".panel").mouseover(functionToRun);

Если вы не используете jQuery, вам понадобится немного больше кода, но я уверен, что вы поняли.

0 голосов
/ 16 февраля 2011

Добавьте атрибут на панель в случае, если повторитель onitemdatabound находится в этом элементе управления, так как это событие будет вызываться каждый раз, когда строка связана, чтобы вам не приходилось вызывать ее foreach.

0 голосов
/ 16 февраля 2011
Панель

обозначена div на стороне клиента, вы можете получить идентификатор на стороне клиента, используя SomePanel.ClientID, однако, если вы ссылаетесь на панель запуска, вы всегда можете использовать this в JavaScript

не будет помещать все обработчики событий на каждый элемент

...