/// <reference name="MicrosoftAjax.js"/>
/// <reference name="AjaxControlToolkit.js"/>
/// <reference name="TreeViewControl.js"/>
/// <reference name="TreeNode.js"/>
Type.registerNamespace("Odyssey.Web");
Odyssey.Web.TreeViewControl = function(element) {
Odyssey.Web.TreeViewControl.initializeBase(this, [element]);
this._cmkeyHandler = null;
this._cmclickHandler = null;
this._contextMenuHandler = null;
this.dragStartHandler = null;
this._clickHandler = null;
this._dblClickHandler = null;
this._keyHandler = null;
this._hiddenFieldName = "";
this._expandedNodes = new Array();
this._multiSelect = false;
this._autoPostBack = false;
this._updating = true;
this._allNodes = null;
this._contextMenu = null;
this._contextMenuVisible = false;
this._selectedIndex = -1;
this._bodyClickHandler = null;
this._enableDragDrop = false;
this._focusOutHandler = null;
this._dblClickEnabled = false;
this._allowNodeEditing = false;
this._mouseMoveHandler = null;
this._disableTextSelection = true;
this._isOpera = false;
this._editNodeIndex = -1;
this._selectedNodePostBackOnly = false; //true, to update only the selected node for the hidden field.
this._captureAllClicks = false;
}
Odyssey.Web.TreeViewControl.prototype = {
initialize: function() {
Odyssey.Web.TreeViewControl.callBaseMethod(this, 'initialize');
this._clickHandler = Function.createDelegate(this, this._onClick);
this._keyHandler = Function.createDelegate(this, this._dokeyDown);
this._contextMenuHandler = Function.createDelegate(this, this._contextMenuEvent);
this._focusOutHandler = Function.createDelegate(this, this._onFocusOut);
this._updating = true;
this._isOpera = Sys.Browser.agent == Sys.Browser.Opera;
var e = this.get_element();
var cm = $get("contextMenu", this.get_element());
if (cm) {
Sys.UI.DomElement.addCssClass(cm, "odcContextMenu");
var s = cm.style;
Sys.UI.DomElement.setVisibilityMode(cm, Sys.UI.VisibilityMode.collapse);
Sys.UI.DomElement.setVisible(cm, false);
s.position = "absolute";
s.zIndex = 10000;
this._cmclickHandler = Function.createDelegate(this, this._cmClickEvent);
this._cmkeyHandler = Function.createDelegate(this, this._cmKeyEvent);
$addHandler(cm, "mousedown", this._cmclickHandler);
$addHandler(cm, "keydown", this._cmkeyHandler);
}
$addHandler(e, 'click', this._clickHandler);
$addHandler(e, "keydown", this._keyHandler);
if (this._isOpera) {
$addHandler(e, "mousedown", this._contextMenuHandler);
} else {
$addHandler(e, "contextmenu", this._contextMenuHandler);
}
$addHandler(e, "focusout", this._focusOutHandler);
if (this._disableTextSelection) {
this._mouseMoveHandler = Function.createDelegate(this, this._onMouseMove);
$addHandler(e, "mousemove", this._mouseMoveHandler);
}
if (this._dblClickEnabled) {
this._dblClickHandler = Function.createDelegate(this, this._onDblClick);
$addHandler(e, "dblclick", this._dblClickHandler);
}
if (this._enableDragDrop) {
this._dragStartHandler = Function.createDelegate(this, this._onDragStart);
$addHandler(e, "dragstart", this._dragStartHandler);
}
},
dispose: function() {
var cm = $get("contextMenu", this.get_element());
if (cm) {
$removeHandler(cm, "mousedown", this._cmclickHandler);
$removeHandler(cm, "keydown", this._cmkeyHandler);
}
var e = this.get_element();
if (this._mouseMoveHandler) $removeHandler(e, "mousemove", this._mouseMoveHandler);
if (this._dblClickHandler) $removeHandler(e, "dblclick", this._dblClickHandler);
$removeHandler(e, "focusout", this._focusOutHandler);
$removeHandler(e, 'click', this._clickHandler);
$removeHandler(e, "keydown", this._keyHandler);
if (this._isOpera) {
$removeHandler(e, "mousedown", this._contextMenuHandler);
} else {
$removeHandler(e, "contextmenu", this._contextMenuHandler);
}
if (this._dragStartHandler) $removeHandler(e, "dragstart", this._dragStartHandler);
Odyssey.Web.TreeViewControl.callBaseMethod(this, 'dispose');
},
_onMouseMove: function(evt) {
///prevent selection:
var dom = new Sys.UI.DomEvent(evt);
if ((dom.target.tagName != "INPUT") || (dom.target.type != "text")) {
dom.stopPropagation();
dom.preventDefault();
}
},
getPostBackId: function() {
/// <summary>gets the id used for __doPostBack</summary>
var id = this.get_element().id;
id = id.replace(/_/g, '$'); // replaces all _ by $. this is necassary for master/content pages.
return id;
},
_onDblClick: function(evt) {
var dom = new Sys.UI.DomEvent(evt);
var e = dom.target;
var node = Odyssey.Web.NodeFromChildElement(e);
if (node) {
if (this.IsParentOf(e, node._getContent())) node.doDblClick();
}
},
_endNodeEditMode: function() {
var node = this.getSelectedNode();
if (node) {
node.setEditMode(false);
//node._update();
}
},
_onFocusOut: function(evt) {
var dom = new Sys.UI.DomEvent(evt);
var e = dom.target;
if (e.id == "edit") {
var node = Odyssey.Web.NodeFromChildElement(e);
if (node) {
node.setEditMode(false); // if allowNodeEditing
node._update(); /// if not allowNodeEditing!
}
}
},
_onDragStart: function(evt) {
var dom = new Sys.UI.DomEvent(evt);
if (dom.button == Sys.UI.MouseButton.leftButton) {
var e = dom.target;
var node = Odyssey.Web.NodeFromChildElement(e);
if (node) {
var c = node._getContent();
}
}
},
IsParentOf: function(e, parent) {
while (e && e.parentNode) {
if (e == parent) return true;
e = e.parentNode;
}
return false;
},
setSelectedNode: function(node) {
this._selectedIndex = node.get_index();
// this.updateClientData();
},
_contextMenuEvent: function(evt) {
var dom = new Sys.UI.DomEvent(evt);
var e = dom.target;
if (this._isOpera && (dom.button != Sys.UI.MouseButton.rightButton)) return;
var node = Odyssey.Web.NodeFromChildElement(e);
if (node && this.IsParentOf(e, node._getContent())) {
dom.stopPropagation();
dom.preventDefault();
node.showContextMenu(dom);
return;
}
this.hideContextMenu();
},
_bodyClickEvent: function(evt) {
this.hideContextMenu();
},
_cmClickEvent: function(evt) {
var ev = new Sys.UI.DomEvent(evt);
ev.preventDefault();
ev.stopPropagation();
},
_cmKeyEvent: function(evt) {
var ev = new Sys.UI.DomEvent(evt);
if (ev.keyCode == Sys.UI.Key.esc) this.hideContextMenu();
},
_updateHiddenFieldInfo: function() {
var hf = this._hiddenFieldName;
if (hf) {
var sb = new Sys.StringBuilder();
if (!this._autoPostBack && !this._selectedNodePostBackOnly) {
// if a click event causes a postback, there is not need to save the state to the hidden field, exce
没有合适的资源?快使用搜索试试~ 我知道了~
一个非常优秀的基于ASP.NET +AJAX 实现的TreeView控件源码及例子程序
共59个文件
cs:22个
scc:13个
gif:5个
4星 · 超过85%的资源 需积分: 9 69 下载量 199 浏览量
2009-01-07
16:05:09
上传
评论
收藏 59KB ZIP 举报
温馨提示
一个非常优秀的基于ASP.NET +AJAX 实现的模版化维护管理TreeView控件源码及例子程序。
资源推荐
资源详情
资源评论
收起资源包目录
An ASP.NET AJAX TreeView control with templates.zip (59个子文件)
Odyssey.Web
mssccprj.scc 165B
TestApp
mssccprj.scc 172B
TestApp.csproj.user 1KB
Xml.xml 701B
TestApp.csproj 6KB
Web.config 7KB
Properties
AssemblyInfo.cs 1KB
vssver2.scc 114B
App_Data
Default.aspx 6KB
Default.aspx.cs 3KB
DataBound.aspx 2KB
TemplatesAndCommands.aspx 2KB
Default.aspx.designer.cs 2KB
TestApp.csproj.vspscc 273B
NodeBindingEvent.aspx.designer.cs 1KB
TemplatesAndCommands.aspx.cs 3KB
NodeBindingEvent.aspx.cs 1KB
ColorHS.png 851B
TemplatesAndCommands.aspx.designer.cs 1KB
NodeBindingEvent.aspx 4KB
DataBound.aspx.designer.cs 2KB
DataBound.aspx.cs 720B
vssver2.scc 846B
Odyssey.Web.sln 1KB
Odyssey.Web
mssccprj.scc 180B
Odyssey.Web.csproj 4KB
Properties
AssemblyInfo.cs 2KB
vssver2.scc 118B
Odyssey.Web.csproj.vspscc 257B
TreeView
OdcTreeNode.cs 10KB
OdcTreeNodeCollection.cs 6KB
OdcTreeViewContextMenuContainer.cs 678B
OdcTreeView.cs 59KB
OdcTreeNodeBindings.cs 801B
OdcTreeNodeBinding.cs 7KB
client
TreeNode.js 15KB
TreeViewControl.js 24KB
vssver2.scc 154B
styles
TreeView.css 3KB
vssver2.scc 120B
EventArgs
OdcTreeViewCommandEventArgs.cs 658B
OdcTreeNodeCheckEventArgs.cs 525B
OdcTreeNodeEventArgs.cs 466B
OdcTreeNodeBindingEventArgs.cs 1004B
vssver2.scc 273B
images
last.gif 855B
minus.png 1KB
line.gif 853B
plus.png 1KB
mid.gif 1KB
root.gif 855B
top.gif 855B
vssver2.scc 265B
DefaultTemplate.cs 4KB
OdcTreeNodeContainer.cs 2KB
vssver2.scc 788B
vssver2.scc 152B
Odyssey.Web.vssscc 256B
vssver2.scc 130B
共 59 条
- 1
领君2018
- 粉丝: 204
- 资源: 1527
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页