惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
GbyAI
GbyAI
阮一峰的网络日志
阮一峰的网络日志
Cloudbric
Cloudbric
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
宝玉的分享
宝玉的分享
I
Intezer
Simon Willison's Weblog
Simon Willison's Weblog
博客园_首页
The Cloudflare Blog
C
Cisco Blogs
AWS News Blog
AWS News Blog
IT之家
IT之家
Cyberwarzone
Cyberwarzone
罗磊的独立博客
美团技术团队
V
V2EX
Project Zero
Project Zero
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
月光博客
月光博客
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 聂微东
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
雷峰网
雷峰网
S
Schneier on Security
P
Privacy International News Feed
V
Visual Studio Blog
量子位
T
Tor Project blog
S
Securelist
腾讯CDC
A
About on SuperTechFans
T
Threat Research - Cisco Blogs
G
GRAHAM CLULEY
B
Blog RSS Feed
D
DataBreaches.Net
博客园 - 三生石上(FineUI控件)
B
Blog
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
V
Vulnerabilities – Threatpost
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
L
LINUX DO - 热门话题
Recorded Future
Recorded Future

博客园 - jiekengxu

工厂方法模式(Factory Method Pattern) 生成器模式(Builder) 抽象工厂模式(Abstract Factory Pattern) asp.net 2.0 权限树的控制(多处转载) 中小型项目的权限管理的数据关系图 简陋的会计凭证金额输入控件(再加强) Web Services Enhancements 3.0 Quick Start(四) asp.net 2.0 缓存(页面输出缓存) asp.net 2.0 缓存(理论篇) 智能客户端概述 Web Services Enhancements 3.0 Quick Start(三) 简陋的会计凭证金额输入控件(加强) Web Services Enhancements 3.0 Quick Start(二) 简陋的会计凭证金额输入控件 Web Services Enhancements 3.0 Quick Start(一) 利用AJAX.net设计现在执行运算的报表 单件模式在报表中的使用 Web Service Software Factory 构架 Web Service Software Factory 入门
初识HTC
jiekengxu · 2006-11-06 · via 博客园 - jiekengxu

         HTC是HTML Component的缩写,是IE5及后续版本浏览器所支持的客户端组件。据我个人理解,HTC就是一组以DHTML为基础封装了客户端行为的脚本,每HTC以*.htc的文件存储,一个HTC是一个客户端“类”。
对象
     document                                在给定的浏览器窗口中表现HTML文档。
     element                          返回一份主文档中连接行为的标签的参考。
     PUBLIC:ATTACH                    绑定一个函数到一个事件上,因此每次事件发生在特殊对象上时函数会被调用。
     PUBLIC:COMPONENT   HTC指明文件的内容。
     PUBLIC:DEFAULTS       设定一份HTC的默认属性。
     PUBLIC:EVENT             定义一个HTC的事件,使之暴露于包含该HTC的文档。
     PUBLIC:METHOD        定义一个HTC的方法,使之暴露于包含该HTC的文档。
     PUBLIC:PROPERTY              定义一个HTC的属性,使之暴露于包含该HTC的文档。
方法
     createEventObject
     创建一个事件对象,当需要传递事件附加信息给PUBLIC:EVENT元素的fire方法时使用。
事件
     oncontentready
     连接了行为的元素的内容完全被解析时发生。
     oncontentsave
     连接了一份元素行为的一个元素的内容被保存或复制前发生。
     ondetach
     从一个元素解除一份行为的连接前发生。
     ondocumentready
     当包含行为的文档完全被解析时发生。

示例

<PUBLIC:COMPONENT>
<PUBLIC:PROPERTY NAME="grid"/><!--返回当前的Grid,通过该属性,可以访问当前Grid的相关信息-->

<!--和.Net中的DataColumn的定义类似-->
<PUBLIC:PROPERTY NAME="columnName"/> <!--列名-->
<PUBLIC:PROPERTY NAME="dataType"/><!--数据类型,如System.String,和SmartGridColumn上的DataType的值保持一致-->
<PUBLIC:PROPERTY NAME="allowNull"/><!--是否允许为空-->
<PUBLIC:PROPERTY NAME="scale"/>
<PUBLIC:PROPERTY NAME="precision"/><!--精度,主要用于数字型-->
<PUBLIC:PROPERTY NAME="maxLength"/><!--最大长度,主要用于文本-->
<PUBLIC:PROPERTY NAME="extendedProperties"/><!--一般用xml串,因为在存储很多信息时,解析非常方便-->

<PUBLIC:METHOD NAME="select"/><!--全选。由于参照编辑框由INPUT、IMG组成,所以需要改写(重载)select方法-->
<PUBLIC:METHOD NAME="focus"><!--置焦点。由于参照编辑框由INPUT、IMG组成,所以需要改写(重载)focus方法-->
<PUBLIC:PROPERTY NAME="input"  GET="getInput"/>
<PUBLIC:PROPERTY NAME="value"  GET="getValue" PUT="setValue"/>
<PUBLIC:METHOD NAME="cellDataCheck"/>
</PUBLIC:COMPONENT>
<script language="javascript">    
    var id 
= null;
    
    
//参照一般有两个值,一个是显示的Text,一个是id。idColumn指明id的Grid列
    var idColumn = null;
    
    var refUrl 
= null;
    var refIdColumn 
= null;
    var refNameColumn 
= null;
    
    var extendedProp 
= element.extendedProperties;
    
if(extendedProp!= null && typeof(extendedProp) != "undefined")
    
{
        var dom 
= new ActiveXObject("MSXML.DOMDocument");
        dom.loadXML(extendedProp);
        
        idColumn 
= dom.documentElement.getAttribute("idColumn");
        
        var refInfo 
= dom.documentElement.firstChild;
        refIdColumn 
= refInfo.getAttribute("idColumn");
        refNameColumn 
= refInfo.getAttribute("nameColumn");
        refUrl 
= refInfo.getAttribute("url");
    }

    
    var btn 
= element.getElementsByTagName("IMG")[0];    
    btn.onclick 
= btnClick;
    function btnClick()
    
{
        var ret 
= window.showModalDialog(refUrl,self,'scrolling:no;resizable:no;status:no;dialogWidth:550px;dialogHeight:450px;center:1');
        
        
if(ret != null)
        
{
            var el 
= ret.documentElement.firstChild;
            
if(el != null)
            
{
                input.value 
= el.getAttribute(refNameColumn);
                
                
if(idColumn != null && idColumn!="")
                
{
                    id 
= el.getAttribute(refIdColumn);
                    grid.setCellValue(grid.row,idColumn,id);
                }
            
            }

        }

        
        
//--------------------------------------------------------------
        grid.setCellValue(grid.row,"num",100); //赋值示例
        grid.setCellValue(grid.row,"price",10); //赋值示例
        
//-------------------------------------------------------------
    }

    
    var statusText 
= "";    
    var input 
=    element.getElementsByTagName("INPUT")[0];
    input.onblur 
= inputOnBlur;
    
    function inputOnBlur()
    
{
        grid.status 
= statusText; //可以通过grid.status来修改Grid状态条的状态。
    }

    
    function getInput()
    
{
        
return input;
    }
    
    
    
//该方法由SmartGrid在显示编辑器时调用。由于参照编辑器由INPUT、IMG等元素组成,所以需要告知SmartGrid在设置编辑器焦点时,应该让哪个元素获得焦点!
    function focus()
    
{    
        input.focus();    
    }

    
    
//该方法由SmartGrid在对编辑器全选时调用。由于参照编辑器由INPUT、IMG等元素组成,所以需要告知SmartGrid在全选编辑器的内容时,应该怎样进行全选!
    function select()
    
{
        input.select();
    }

        
    function setValue(val)
    
{
        input.value 
= val;
    
        
if(idColumn != null)
        
{
            var r 
= grid.row;
            id 
= grid.getCellValue(r,idColumn);
        }

    }

    
    function getValue()
    
{
        
        
return input.value ;
    }

            
    function cellDataCheck(args)
    
{
        
return ;    
    }

        
</script>