HTC基础知识

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>

(0)

相关推荐

  • HTC基础知识

    HTC是HTML Component的缩写,是IE5及后续版本浏览器所支持的客户端组件.据我个人理解,HTC就是一组以DHTML为基础封装了客户端行为的脚本,每HTC以*.htc的文件存储,一个HTC是一个客户端"类".  对象      document                                在给定的浏览器窗口中表现HTML文档.      element                          返回一份主文档中连接行为的标签的参考.      PU

  • JavaScript基础知识及常用方法总结

    JAVASCRIPT是AJAX技术中不可或缺的一部分,所以想学好AJAX以及现在流行的AJAX框架,学好JAVASCRIPT是最重要的. 一.基础知识: 1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单

  • AngularJS实用基础知识_入门必备篇(推荐)

    前言 今天来和大家学习一下AngularJS-- AngularJS 通过新的属性和表达式扩展了 HTML. AngularJS 可以构建一个单一页面应用程序. AngularJS 学习起来非常简单. 一.AngularJS指令与表达式 [AngularJS常用指令] 1.ng-app:声明Angular所管辖的区域,一般写在body或HTML上,原则上一个页面只有一个. 2.ng-model:把元素值(比如输入域的值)绑定到应用程序的变量中. eg:<input type="text&q

  • AngularJS 最常用的八种功能(基础知识)

    AngularJS 使用基础知识 第一 迭代输出之ng-repeat标签 ng-repeat让table ul ol等标签和js里的数组完美结合 <ul> <li ng-repeat="person in persons"> {{person.name}} is {{person.age}} years old. </li> </ul> 你甚至可以指定输出的顺序: <li ng-repeat="person in pers

  • PHP小白必须要知道的php基础知识(超实用)

    很多人看到PHP就以为是程序员,就以为钱很多(虽然是事实),但是也要考虑下自己是不是适合这一行,知道PHP是什么吗?PHP都有什么样的功能,都能用来干嘛? PHP是什么? •PHP(PHP: Hypertext Preprocessor,超文本预处理器的缩写),是一 种被广泛应用的开放源代码的.基于服务器端的用于产生动态网页 的.可嵌入HTML中的脚本程序语言,尤其适合 WEB 开发. •当客户端向服务器的程序提出请求时,web服务器根据请求晌应对应 的页面,当页面中含有php脚本时,服务器会交

  • ASP新手必备的基础知识

    我们都知道,ASP是Active Server Page的缩写,意为"动态服务器页面".ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行交互,是一种简单.方便的编程工具.下面介绍一些基本知识,供大家参考. 一.数据库连接 以下为引用的内容: <% set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access dr

  • 学习shell脚本之前的基础知识[图文]

    日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多.笔者在这一章中并不会多么详细的介绍shell脚本

  • HTTP报文及ajax基础知识

    HTTP报文 客户端传递给服务器的内容 和 服务器传递给客户端的内容 都属于HTTP报文 起始行:请求起始行  响应起始行 首部:请求首部 响应首部 通用首部(请求和响应都有的) 自定义首部 主体:请求主体  响应主体 客户端传递给服务器端数据: 请求URL后面问号传参的方式传递给服务器  /getList?name=zhangsan&age=7 设置请求的首部(设置请求头信息) 设置请求主体,把传递给服务器的内容放在请求主体中传递给服务器 服务器端传递给客户端数据: 设置响应头信息 设置响应主

  • Lua中函数与面向对象编程的基础知识整理

    函数 1. 基础知识 调用函数都需要写圆括号,即使没有参数,但有一种特殊例外:函数若只有一个参数且参数是字面字符串或table构造式,则圆括号可有可无,如dofile 'a.lua',f{x=10, y=20}. Lua为面向对象式的调用提供冒号操作符的特殊语法,如o.foo(o, x)等价于o:foo(x).和Javascript类似,调用函数时提供的实参数量可以与形参数量不同,若实参多了则舍弃,不足则多余的形参初始化为nil. 1.1 多重返回值 Lua允许函数返回多个结果,函数返回如ret

  • GO语言(golang)基础知识

    今天说一些golang的基础知识,还有你们学习会遇到的问题,先讲解hello word 复制代码 代码如下: package main import "fmt" func main() {    fmt.Println("你好,我们"); } package name 包机制,每一个独立的go程序都需要有一个package main的申明,主要是要为下边入口函数main()做申明的,import和java一样导入包用的 就是下边我们函数用的fmt.Println()

随机推荐