Джен прямо здесь (вы должны принять ее ответ).
FireEvent("oncontextmenu")
на узле дерева у меня тоже не работало, пока я не нашел элемент, где присутствовало событие.
Узлы обычно являются Div
элементами управления, и я достигаю этого следующим образом:
// Selecting node span first
myDiv.Spans[0].Click();
// Firing the event on the Div
myDiv.FireEvent("oncontextmenu");
Основная проблема Tree Nodes (и всех других сложных DOMструктура) - запускать события на хорошем элементе DOM.
В большинстве сложных DOM-структур к событиям прикрепляется код JavaScript во время Init()
элементов управления (например, Telerik делает это).Таким образом, вы не можете видеть событие в исходном коде HTML.
Если вы не можете найти события, вам придется отлаживать свой javascript, используя, например, Visual Studio .
Чтобы понять, о чем я говорю, вот пример того, как события могут быть связаны с JavaScript:
TreeView.prototype.OnInit=function(){
this.AttachAllEvents();
}
TreeView.prototype.AttachAllEvents=function(){
var _this=this;
var _container=document.getElementById(this.Container);
_container.onfocus=function(e){
eventDispatcher(_this.ClientID,"focus",e);
};
_container.onmouseover=function(e){
eventDispatcher(_this.ClientID,"mouseover",e);
};
_container.onmouseout=function(e){
eventDispatcher(_this.ClientID,"mouseoout",e);
};
_container.oncontextmenu=function(e){
eventDispatcher(_this.ClientID,"contextmenu",e);
};
_container.onclick=function(e){
eventDispatcher(_this.ClientID,"click",e);
};
_container.ondblclick=function(e){
eventDispatcher(_this.ClientID,"doubleclick",e);
};
_container.onkeydown=function(e){
eventDispatcher(_this.ClientID,"keydown",e);
};
if(window.attachEvent){
window.attachEvent("onunload",function(){
_this.Dispose();
});
}
};