前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >smartClient 2--可视化组件

smartClient 2--可视化组件

作者头像
用户1148399
发布2018-01-09 15:56:38
7100
发布2018-01-09 15:56:38
举报
文章被收录于专栏:web前端web前端

一、功能:

    1、标准功能

代码语言:javascript
复制
Foundation Services
Foundation Components
Event Handling
Controls
Forms
Grids
Trees
Layout
DataBinding
Themes/Skins

    2、扩展功能

代码语言:javascript
复制
SmartClientServer  //包含Java类库的集成后端
Analytics
Real-Time Messaging
Network Performance

二、开发语言

    1、XML

    2、JavaScript(推荐使用)

三、资源:https://www.smartclient.com/smartclient/showcase/?id=formLayoutFilling&skin=Simplicity&fontIncrease=1&sizeIncrease=2

四、样式修改:

    1、更换系统皮肤:引用不同的css包

    2、自定义样式:

        a. 同系统皮肤自成一个文件夹的形式一样,新建文件夹(如BrushedMetal),将最接近目的皮肤的文件夹里的内容(包含skin_styles.css   images/   load_skin.js)copy进新文件夹

        b. 在首页入口文件中引用的皮肤样式文件中引入新建样式

        c. 在skin_styles.css和load_skin.js的文件底部重写样式(找到某个需要修改的类,例如button,在后面写上覆盖样式即可)

    3、重构独立的组件内部的样式

五、可视化组件

    1、独立组件

        a. 识别组件(引用组件方式)

            采用 id:   默认组件的id是全局命名空间下的(所以命名id时,需要注意唯一性)

代码语言:javascript
复制
isc.Label.create({
   ID: "helloWorldLabel",
        contents: "hello world"
});

            自动分配id,规则:isc_ClassName_ID_#

代码语言:javascript
复制
var helloWorldLabel = isc.Label.create({ 
    contents: "Hello World" 
});

        b. 组件布局:通过设置组件属性的方式创建组件    注意:如果不是在组件中定义组件布局(如下),而是在CSS/HTML中直接修改,则必须手动做好浏览器兼容问题

代码语言:javascript
复制
isc.Label.create({
   top: 10,    //int,相对于该组件的container
   left: 10,
   width: 10,    //int | string "50%", 默认100
   contents: "hello world",
   overflow: "hidden | scroll | auto",
   position: "relative | absolute | fixed"    //默认absolute,相对于该组件的container
});

        c. 组件的渲染、隐藏、显示

代码语言:javascript
复制
autoDraw: true | false;    //默认TRUE,即create即显示,如果FALSE,则需要js控制: hiddenBtn.show();
show();
hide();
 
eg.
isc.Button.create({
   ID: 'hiddenBtn',
   title: 'Hidden',
   autoDraw: false
});

        d. 组件的事件

代码语言:javascript
复制
click recordClick change tabSelected
 
eg. 
isc.Button.create({
   ID: "clickBtn",
   title: "click me",
   click: function(){},
   click: "isc.warn('button was clicked')",
   click: "clickFn()"
});
function clickFn() {......}

        e. 数据绑定

            字段field:包括组件字段 和 数据源字段

代码语言:javascript
复制
//网格的形式显示
isc.ListGrid.create({
   ID: "contactList",
   left: 50, top: 50,
   width: 300,
   fields: [
      {name: "salutation", title: "Title"},    //name 是关联数据库中的value,title是显示文字(在表单控件中是作为label显示,在button中是作为button上的文字显示)
      {name: "firstname", title: "First Name"}      
   ]
});
 
data: [
   {salutation: "Ms", firstname: "Kathy"},
        {salutation: "Ms", firstname: "Kathy"},
];
 
//DynamicForm的格式显示
isc.DynamicForm.create({......同上});

         g. 表单控件    注意:一旦组件绑定了数据源,组件将会根据数据源的数据格式自动匹配表单控件《即不需要fields字段,会自动匹配并绑定数据》。但是通常fields和

代码语言:javascript
复制
dataSource共存,行使不同的职责( 表单字段(field)或者说控件的默认类型(editorType)是text )
//editorType: text select date checkbox radioGroup textArea
isc.DynamicForm.create({
   ID: "contactForm",
   ......,
   fields: [
      {name: "salutation", title: "Title", editorType: "select"},    
      {name: "firstname", title: "First Name", editorType: "date"},
      {name: "gender", title: "gender", editorType: "radioGroup", valueMap: ["female", "male"]}    //valueMap 是数组形式的radio的选项显示文字
   ]
});

        h. 数据源(数据源的定义格式类似SQL数据存储格式,区别在于:1)存储方式是XML或者js;2)必须定义数据类型;......)

代码语言:javascript
复制
<DataSource ID="contactsDS">
<fields>
    <field primaryKey="true" name="id" hidden="true" type="sequence" />
    <field name="salutation" title="Title" type="text" >
        <valueMap>
            <value>Ms</value>
            <value>Mr</value>
            <value>Mrs</value>
        </valueMap>
    </field>
    <field name="firstname" title="First Name" type="text" />
    <field name="lastname" title="Last Name" type="text" />
    <field name="birthday" title="Birthday" type="date" />
    <field name="employment" title="Status" type="text">
        <valueMap>
                <value>Employed</value>
                <value>Unemployed</value>
        </valueMap>
    </field>
    <field name="bio" title="Bio" type="text" length="2000" />
    <field name="followup" title="Follow up" type="boolean" />
</fields>
</DataSource>

         h1.    xml格式的DataSource创建好之后,在js文件里引入该文件,并通过 dataSource 属性,即可绑定数据(此时用dataSource代替了fields属性)

代码语言:javascript
复制
<isomorphic:loadDS ID="contactsDS" />
 
<%@ taglib uri="isomorphic" prefix="isomorphic" %>
<HTML>
<HEAD>
    <isomorphic:loadISC />
</HEAD>
<BODY>
<SCRIPT>
    <isomorphic:loadDS ID="contactsDS" />
    isc.ListGrid.create({
        ID: "contactsList",
        left: 50, top: 50,
        width: 500,
        dataSource: contactsDS
    });
    isc.DynamicForm.create({
        ID: "contactsForm",
        left: 50, top: 200,
        width: 300,
        dataSource: contactsDS
    });
</SCRIPT>
</BODY>
</HTML>

        h2.    字段属性(fields的属性type)和表单控件一一对应规则:

代码语言:javascript
复制
Field attribute                    Form control
valueMap provided        SelectItem (dropdown)
type:"boolean"                CheckboxItem (checkbox)
type:"date"                        DateItem (date control)
length > 255                    TextAreaItem (large text box)

         h3.    数据源的操作

代码语言:javascript
复制
//以下方法均包含可选三个参数:dataObject,callback,propertiseObject
fetchData();
filterData();
addData();
updateData();
removeData();
 
//使用方法: 1)直接在数据源中使用    2)直接在组件做数据绑定的时候使用
contactDS.addData(
   {salutation: "Mr", firstname: "Steven", lastname: "Hua"},
    "say("hello")",
    {prompt: "add new contact..."}
);
 
or
 
contactsList.fetchData(
    {lastname: "nihao"}
);

        h4.    调用组件方法操作数据

代码语言:javascript
复制
editRecord();
editNewRecord();
saveData();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-11-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档