14.事件


  Supcan Treelist的OnEvent( id, Event, p1, p2, p3, p4 )事件含义及参数分别如下:
Event含义p1p2p3p4
SelChanged 当前行或单元格已变化(被切换) 行号 列名(见备注)    
备注:当p2参数为空串时, 表示当前行已变化: 否则表示当前单元格已变化, 并且进入编辑状态
Clicked 情形1: 鼠标点到某单元格 行号 列名 如果当前列为超链接, 则为本单元格的内容 HyperLink
情形2: 鼠标点到某列表头 -1 列名 1 / 0 / icon(见备注)  
备注:如果是isCheckboxOnly 列, 则p3为 1 或 0; 如果是点击在headerIcon小图标上,则p3为串icon
情形3: 鼠标点到 EditWithButton 输入框右侧的按钮 行号 列名   见备注
备注:p4参数规定为:如果当前列为 Button 型 或 editWithButton 型, 鼠标点在 button 上则为 "button";如果列中有多个 button,那么分别为 "button1"、"button2"... 依次类推
情形4: 鼠标点到下拉 DropTreelist 弹出窗的自定义按钮上 行号 列名 DropdownButton 按钮的 id
DblClicked 鼠标双击某单元格 行号 列名    
备注:可执行全局函数CalcelEvent( )阻止继续执行
BeforeEdit 某单元进入编辑(输入)前 行号 列名    
备注:可执行全局函数CalcelEvent( )阻止继续执行
EditChanged 某单元被修改 行号 列名    
执行了右键菜单的"粘贴" 开始行号 开始列名 结束行号 结束列名
备注:在编辑状态下单元格内部的右键菜单是操作系统的菜单,是不会触发本事件的
DropdownSelChanged 某单元的下拉 Treelist 的选中行已变 行号 列名 1 - 数据有变化
0 - 数据无变化
 
备注:该事件和 EditChanged 不太一样, 因为下拉以后, 仍可以通过 Esc 键反悔、 不再触发 EditChanged 事件. 当然,如果您在 <properties> 中设定了 AutoUpdate="true", 那就无法用 Esc 反悔了
BeforeDropdown 某单元的下拉 List 或下拉 Treelist 正准备下拉 行号 列名    
备注:可执行全局函数CalcelEvent( )阻止继续执行, 但仅对下拉 Treelist 有效, 对下拉 List 无效
EditKeydown 在编辑状态时输入框的键盘动作
请见备注2
行号 列名 键的ASCII码,例如回车是13、空格是32 见备注2
备注1:EditKeydown 和 EditChar 事件均为在输入框中的键盘事件,EditKeydown 能捕获几乎所有键盘动作,包括非字符的回车、Tab等;而 EditChar 事件则以输入的字符为主,包括中文;
备注2:p4的含义为: 1-Ctrl键也按下了; 2-Shift键也按下了; 3-二者一起按下了
备注3:您可以执行全局函数 CancelEvent( ) 去阻止继续执行,就如事件没有发生过那样,但不同的ASCII码,您需要在这两个事件中挑选一个执行CancelEvent( ),具体请在演示页“12.事件”中去测试
EditChar 在编辑状态时输入框的键盘字符 行号 列名 字符的ASCII码  
备注:EditKeydown 和 EditChar 事件均为在输入框中的键盘事件,EditKeydown 能捕获几乎所有键盘动作,包括非字符的回车、Tab等;而 EditChar 事件则以输入的字符为主,包括中文;
Keydown 在非编辑状态时的键盘动作 行号,如果有多行则以逗号分隔   键的ASCII码,例如回车是13、空格是32 见备注2
备注1:可执行全局函数CalcelEvent( )阻止继续执行
备注2:p4的含义为: 1-Ctrl键也按下了; 2-Shift键也按下了; 3-二者一起按下了
LooseFocus 某单元刚失去焦点 行号 列名 导致失去焦点的动作键位值:
9 - Tab
13 - 回车
37 - left
38 - up
39 - right;
40 - down
空串 - 鼠标或其它原因导致
 
rowsInserted 有行插入 新行的行号 数量    
BeforeRowsDeleted 有行即将被删除 被删行的行号, 若有多行则以\t分隔      
备注:可执行全局函数CalcelEvent( )阻止继续执行
rowsDeleted 有行被删除 被删行的Key, 若有多行则以\t分隔 被删除行的原始内容(XML串), 或内存句柄(纯数字串)    
备注1: 未定义 key 的 Treelist 不会触发该事件;
备注2: 如果P2参数是内存句柄, 可以用全局函数 GetDataString 取得串
LazyLoad LazyLoad="true"的单列多层树的树杈被首次点击 行号 id号 (当treeformat为byId、byPid时)    
MenuBeforePopup 鼠标右键菜单即将弹出 行号,
可能为-1
列名,
有可能为空
   
MenuClicked 鼠标右键菜单自定义功能被选中 菜单项id 行号 列名  
BeforeDragRow 行即将被拖拽 被拖动的行,多个行则以逗号分隔 目的行 1/0 - 拖动到目的行的上方/下方 见备注2
备注1:可执行全局函数CalcelEvent( )阻止继续执行
备注2:p4参数格式为 handle=[?];asChild=true,例如串 "handle=82922093;asChild=true",其中 handle 的含义为源 Treelist 的句柄(可通过 GetHandle 函数获得),如果是自我拖拽,则不出现该项;asChild=true 表示作为子孙拖入,如果非子孙、或者当前非树,则不出现该项.
RequestAllPages 需要加载全部数据,以打印或转换输出        
备注:用于分页显示时
Switched 被执行了树、列表之间的切换        
备注:仅在弹出菜单时触发, 通过 js 进行切换是不会触发的
Sort 已重新排序 (触发了排序操作) 如果<Properties>中定义了IsRemoteSort,
则为“1”,否则是空
     
CustomAble 用户修改了界面中与可定制(GetCustom函数)有关的内容, 如选择显示列、列宽等等 ColHideShow - 列的显示/隐藏有变化
ColWidth - 列的宽度有变化
ColSeq - 列的左右排列次序有变化
     
备注:目前 p1 只有这几种,今后版本会继续完善.
InvalidMouseWheel 无效的鼠标滚轮操作 如果顶部已经是第一行仍然要上滚,为"up"; 如果底部已经是末行仍要下滚, 则为“down”      
备注:常用于分页显示情形
Printed 已打印
(是指打印任务已经发送给操作系统的打印任务队列)
  0 - 普通打印;
1 - 在预览窗口中的打印当前页;
2 - 在预览窗口中的打印全部页;
   
Previewed 打印预览窗已关闭        
Load 数据已经通过Load( )函数加载 URL, 空串表示加载的是XML/JSON串 0-同步加载
1-异步加载
0-加载失败
1-加载成功
 
Imported 刚从Excel文件导入 导入的起始行的行号 导入的总行数    
ExportDialog 转换输出对话框中,当用户点击"确定"后、文件对话框即将弹出前 文件后缀      
备注:可以在该事件中执行 SetExportFilename 函数,详见该函数的说明.
MouseMoveIn 鼠标移入某个单元格 行号 列名    
备注1:<Col>设定了 MouseMoveIn 属性值才能生效
备注2:鼠标在单元格上方停留不动、停留时间超过设定的值才触发该事件
MouseMoveOut 鼠标移出某个单元格, 和鼠标移入事件 MouseMoveIn 配对 行号 列名    
UndoState Undo状态有改变        
DataReach 已经访问了 dataURL(包括 Load 函数访问) 并得到了数据,但尚未应用该数据 内存块的句柄(纯数字串形式) URL    
备注1:可以用全局函数 GetDataString / SetDataString 取得或更改内存块中的数据
备注2:可以用上述2个函数存取数据,但不宜过多调用其它函数,否则会造成不稳定
DropDownDataReach 某个异步加载数据的下拉已经获得了数据并已完成加载 某个下拉资源的 id - 表示此下拉数据已经到达
Complete! - 所有异步下拉的数据已全部到达
     
备注1:异步访问http的下拉列表、下拉树列表在初始加载数据时触发
备注2:同步加载数据的下拉不会触发本事件
备注3:当全部异步下拉都完成加载后,本事件会再次被触发,p1是固定的串 "Complete!"
HotKey 触发了快捷键 快捷键 当前行的行号, 如果正在输入的话 当前列的列名, 如果正在输入的话  
UserEvent 全局函数 PostMessage 发出的自定义事件 自定义 自定义 自定义 自定义
CacheSaved 全局事件,请参见全局函数 ListenEvent 缓存的ID      
Download 全局事件,请参见Freeform组件的同名事件        
Upload 全局事件,请参见Freeform组件的同名事件        
  在线演示中有大量的事件脚本,请自行参考。