走进PIMShell(4)--网页的架构htm/xml/js

PIM协议(PIM-DM、PIM-SM) PIM协议(protocal independent multicast) 直接利用单播路由表的路由信息进行组播报文RDF检查,创建组播路由表项,转发组播报文 PIM-DM: 采用“push”模式,转发组播报文 关键任务:建立SPT(shortest path tree最短路径树) 工作机制: 邻居发现:hello报文,选举查询器DR(优先级高或IP地址大) hello报文的默认周期... 阅读详情

PIMShell中的界面都是用网页的形式实现的。PIMShell所使用的网页架构一般包含三个文件,.htm/.xml/.js。.htm文件定义界面中的DOM元素,.xml文件为DOM元素附加所需要的行为(behavior),.js文件实现javascript代码。比如,要实现一个用户列表,建立三个文件list.htm/list.htm.xml/list.htm.js,代码如下:

1、list.htm文件

  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <title>用户列表</title>
  4. <link type="text/css" rel="Stylesheet" href="/css/main.css" />
  5. <xml src="list.htm.xml"></xml>
  6. <script type="text/javascript" src="list.htm.js" language="javascript"></script>
  7. </head>
  8. <body>
  9. <div id="List1"></div>
  10. </body>
  11. </html>
  • 行4:定义了页面的样式。在main.css文件中为body设置了如下的样式


    1. body
    2. {
    3.  behavior:url(#default#PIMShell);
    4. }

    这个样式为body元素添加了一个名叫PIMShell的缺省行为。这个行为负责解析后续的xml文件,并激发onpageload事件,从而执行js文件中的代码。

  • 行5:定义xml文件,为页面中的DOM元素附加行为。

  • 行6:定义js文件,包含需要的javascript代码。

  • 行9:定义了一个名为List1的div元素,用于显示列表信息。

2、list.htm.xml文件

    1. <?xml version="1.0" encoding="utf-16"?>
    2. <page>
    3.     <root enableFrame="false" enableContextMenu="false">
    4.         <controls>
    5.             <control id="List1">
    6.                 <behaviors>
    7.                     <ListView autoFitRows="false" allowPage="false">
    8.                         <header>
    9.                             <cols>
    10.                                 <col name="name" text="姓名" width="60">
    11.                                     <bind>
    12.                                         <text>[#Name#]</text>
    13.                                     </bind>
    14.                                 </col>
    15.                                 <col name="sex" text="性别" width="40">
    16.                                     <bind>
    17.                                         <text>[#Sex#]</text>
    18.                                     </bind>
    19.                                 </col>
    20.                                 <col name="email" text="电子邮件" width="80">
    21.                                     <bind>
    22.                                         <a href="mailto:[*Email*]"><img src="pim://images/mailsend.ico" border="0" /></a>
    23.                                     </bind>
    24.                                 </col>
    25.                             </cols>
    26.                         </header>
    27.                     </ListView>
    28.                 </behaviors>
    29.             </control>
    30.         </controls>
    31.         <events>
    32.             <onpageload handler="onpageload" />
    33.         </events>
    34.     </root>
    35. </page>
  • 行5:将元素List1定义为部件
  • 行7:为List1附加行为ListView
  • 行8-26:定义列表中用到的属性列
  • 行32:绑定事件onpageload

3、list.htm.js文件

    1. //事件:onpageload
    2. function onpageload()
    3. {
    4.     //准备记录集
    5.     var oEntityset=__prepareEntityset();
    6.     
    7.     //绑定
    8.     $("List1").dataSource=oEntityset;
    9.     $("List1").dataBind();
    10. }
    11. //准备记录集
    12. var g_sUsers="张三,男,zhangsan@msn.com;李四,男,lisi@msn.com;王霞,女,wangxia@msn.com";
    13. function __prepareEntityset()
    14. {
    15.     //
    16.     var oEntityset=Sys.Entityset;
    17.     
    18.     //
    19.     var oUserArray=g_sUsers.split(";");
    20.     for(var i=0;i<oUserArray.length;i++)
    21.     {
    22.         //添加一条新记录
    23.         oEntityset.addNew();
    24.         
    25.         //
    26.         var oPropArray=oUserArray[i].split(",");
    27.         
    28.         oEntityset("Name")=oPropArray[0];
    29.         oEntityset("Sex")=oPropArray[1];
    30.         oEntityset("Email")=oPropArray[2];
    31.     }
    32.     
    33.     //移到首部
    34.     oEntityset.movefirst();
    35.     
    36.     return oEntityset;
    37. }
  • 行2:响应事件onpageload
  • 行5:构造一个测试用的记录集oEntityset
  • 行8-9:将记录集oEntityset绑定到元素List1上,从而完成列表的显示

4、网页运行效果

  •  

【超分辨率(Super-Resolution)】关于【超分辨率重建】专栏的相关说明,包含专栏简介、专栏亮点、适配人群、相关说明、阅读顺序、超分理解、实现流程、研究方向、论文代码数据集汇总等 本专栏研究领域为【超分辨率重建】,涵盖图像超分、视频超分,实时超分,4K修复等方面。主要内容包括主流算法模型的论文精读、论文复现、毕业设计、涨点手段、调参技巧、论文写作、应用落地等方面。算法模型从SRCNN开始更新至今,一般是一篇论文精读对应一篇论文复现。论文精读详解理论,归化繁为简,归纳核心,积累词句,培养阅读论文和论文写作能力。论文复现依托Pytorch代码,实现完整的模型训练流程,总结调参方法,记录碰到的bug,论文插图可视化,培养读写代码能力、做实验的能力、以及应用落地能力。 阅读详情

相关推荐

告别CPU空转!用STC8的SPI+DMA高效驱动上百颗WS2812B灯珠

本文详细解析了如何利用STC8单片机的SPI+DMA外设高效驱动WS2812B全彩灯珠,解决传统软件延时驱动方式在长灯带应用中的性能瓶颈。通过硬件方案设计、数据格式转换和DMA传输配置,实现高达400Hz的刷新率和低于5%的CPU占用率,适用于大规模灯光项目。

weixin_30847939的博客 396

关于C#引用类型值作为参数传递时是否可被更改

应用场景:我有一个字典类型的变量,字典的value是list。我要将这个字典中的所有内容传入数据库交互层中的一个方法(InsertFunc)中,然后向数据库插入数据,同时还要每插入字典中的一个item就更新页面上的进度条。所以,我就只能每次只向InsertFunc传入字典的一个item,如果成功插入,就返回1,插入发生异常就返回0,这样的话,在页面层才可以进行进度条的控制。而且,如果要插入的数据主键已经在数据库存在时,要将数据库的数据赋值到这个字典item的value中,由于我们是将字典的每个item传入跨

十八线Coder的博客 1406

硬件学习笔记(器件篇)—— 磁珠与磁环

因为有这些差别,所有经常会让人们觉得他们并不是一类器件,但实际上他们的原理是一样的。我们使用磁珠是为了利用损耗消耗高频能量,所以如果我们理解了磁珠是如何消耗高频能量的,我们就能理解磁珠的工作原理。

y_u_yu_yu_的博客 1万+

phim java.net_phimse.net服务器iP

2019-05-12-----2021-02-21207.244.65.582019-06-10-----2021-02-2137.48.65.1552019-06-15-----2021-02-2137.48.65.1432020-03-18-----2021-02-215.79.68.1102020-04-13-----2021-02-2196.47.230.692020-10-28-----...

weixin_39797758的博客 1万+

Eureka常见面试题总结

点击关注我的博客原文 Eureka是Netflix组件的一个子模块,也是核心模块之一。云端服务发现,一个基于 REST 的服务,用于定位服务,以实现云端中间层服务发现和故障转移(来源springcloud中文网的介绍:https://www.springcloud.cc/)。下图总结了Eureka服务端(以下简称服务端)与Eureka客户端(以下简称客户端)之间协同工作的流程: 流程说明:...

u012105931的博客 2万+

【LVGL】学习笔记--(3)界面切换以及显示优化

界面切换和帧率优化

sinat_33408502的博客 1万+

走进PIMShell(5)--Form(窗体)的应用

在pimshell中实现一个网页建议采用htm/xml/js三个文件。.htm文件定义界面中的DOM元素,.xml文件为DOM元素附加所需要的行为(behavior),.js文件实现javascript代码。但是在实际应用时,需要将这些文件放入到某个插件(可以是自制的插件)的目录中才能正常运行。为了方便网页的编写和运行,PIMShell提供了一个特制的Form(窗体)插件。一个Form可代表一个网

pimshell的专栏 2720

安卓逆向实战:用Batch Apktool 3.8.0快速汉化APK的完整流程

本文详细解析了如何使用Batch Apktool 3.8.0进行安卓APK汉化的完整流程,包括环境配置、反编译、资源解析、深度汉化、重构建与签名优化等关键步骤。通过这款集成化逆向工具,开发者可以高效完成APK汉化,提升工作效率。

s1t2u3的博客 1099

PIM Sparse-Mode 中 RP 的三种定义方法(static、AutoRP、BSR)

ip multicast中,我们最常用的就是PIM了,因为它独立于路由协议的特性,当之无愧地成为了最重要的多播路由协议。 PIM 分为三种模式:Sparse Dense Sparse-Dense 在非DENSE模式下,PIM需要借助RP来实现多播路由转发,多播数据转发等功能。 RP的建立方式有三种,分别是static autorp 以及 bsr...

weixin_34128237的博客 644

【 Git学习记录(三)】推荐四款主流的Git代码托管平台 —— GitHub、GitLab、Gitee、Coding

了解过Git之后,作为一个程序猿最基本的,你还需要了解目前主流的在线代码托管平台,并至少选择其中一款在平时开发中使用。这里特别介绍以下四款: 国外平台 GitHub —— 全球最流行的代码托管平台 GitLab —— 基于git的仓库管理程序 国内平台 Gitee —— 开源中国旗下的代码托管平台 Coding —— 支持社交元素的代码托管平台 一. GitHub 链接地址:https://github.com/ GitHub目前是全球最流行的代码托管平台(别称:全球最大的同性交友.

JZevin的博客 6092

MOOS-ivp 实验三 MOOS简介(3)

MOOS-ivp 实验三 MOOS简介(3) 继上一篇文章继续对实验进行记录 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录MOOS-ivp 实验三 MOOS简介(3)六、A Simple Example with pXRelay1.pXRelay基本使用2.pXRelay简单例子3.pXRelay实验七、First Experiments in Modifying MOOS App Code1.下载一个MOOS模板文件2.打开MOOS模板文件总结 六、A Simple E

weixin_44151170的博客 2534

PIM-SM 解读

转载于:https://blog.51cto.com/zoukejian/55908

weixin_33973600的博客 279

动力学约束下的运动规划算法——Kinodynamic RRT*算法

动力学约束下的运动规划算法——Kinodynamic RRT*算法

慕羽★的博客 6749

看文档学爬虫(8)——python与mongoDB

转自:http://f61be319.wiz03.com/share/s/3S6-cp1BIQ952yXKyj02PIM42fCaN43xwQQJ2_Xy000Aleeg NoSQL简介 not only SQL 非关系型数据库产品是传统关系型数据库的功能阉割版本, 通过减少用不到或很少用的功能, 来大幅度提高产品性能 NOSQL是基于键值对的, 而且不需要经过SQL层的解析, 所以性能非常高。...

sinat_18131557的博客 284

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ip pim dense-mode 的精简解析

在学习多播的设置,但网上找了很久都没看到好一点的关于ip pim dense mode中文介绍,英文的呢又很长,没简单说明,我现在把自己的理解说一下,有错的地方请大家指正! dense-mode是最简单的,无需RP选举,在global模式输入ip multicast-routing,然后在各端口输入ip pim dense-mode即可。 一个...

weixin_34266504的博客 2008

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

c#二进制文件数据转换base64字符串文本代码

using System; using System.Text; namespace ConsoleTest { internal class Program { private static void Main(string[] args) { string aaa = ...

dcryefx44317的博客 5万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

gtp6 linux 启动_Linux-kernel mailing list archive 2002-23,: [PATCH] 2.5.20 IDE 86

[PATCH] 2.5.20 IDE 86Martin Dalecki (dalecki@evision-ventures.com)Sun, 09 Jun 2002 15:37:02 +0200This is a multi-part message in MIME format.--------------020405080704040300060008Content-Type: text/pl...

weixin_39667398的博客 1万+

web开发 HTML/CSS基本框架结构讲解

HTML/CSS基本框架结构讲解<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style></style></head><body></body></htm...

weixin_34380781的博客 362

练习题

题1 在VS2013下,这个结构体所占的空间大小是( )字节 typedef struct{ int a; char b; short c; short d; }AA_t; 答案:12 题2 在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是( ) struct A { int a; short b; int c; char d; }; struct B { in...

xinrui_z的博客 598

源特定组播

随着网络宽带化进程的加快,流媒体以其直观性、实时性、互动性等特点广泛应用于视频点播、网络教学、网络直播等诸多业务。这些业务都具有点对多点的业务特性,因此,为了节省网络资源的占用,不论是ATM 还是IP,作为承载网络,组播技术都是必不可少的一项重要技术。 随着IP网络的日益普及,特别是IP网络端到端的网络特性使网络终端的加入和离开可以更加灵活,IP组播技术的应用具有了更强的实用性,因此也就得到了更...

weixin_30731287的博客 2952

[转]IP组播

随着internet的飞速发展,利用internet进行协作开发的项目越来越多。对某些应用而言,如分布式数据库开发,一个开发工作组有很多人需在不同的地点协作并经常交换情况。在组的规模比较小的情况下,只需点对点交换信息即可;如果组的规模比较大,点对点交换信息不管对网络还是对信息发送者,都是一种负担,代价昂贵。有时虽可用广播的方式进行处理,但如果在一个上百万节点的网络上向数千台主机进行广播是很低效的甚...

jarbee 320

(微信开发)PHP curl模拟登陆教务系统查询成绩查询课表实现微信查成绩差课表功能

最近微信开发特别火,刚学会helloword的我也去玩了一下。做了一个微信端查成绩、查课表、查考试安排,图书借阅情况,一键续借的微信公众账号。做了几天,从只会echo到这个公众账号完成,遇到了不少问题,也学到了不少东西。现在写出来算是总结吧。也给需要的同学一个参考的例子。下面以中南民族大学教务系统为例。      一.原理        模拟登陆的原理是这样的,当我们登陆教务系统的时候,我们把学号

xiaoxiaobai2015的专栏 91万+

由你自己定义的数据类型----C语言之自定义类型:结构体,枚举,联合。

1、结构体 结构体类型的声明 结构的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 结构体实现位段(位段的填充&可移植性) 2、枚举 枚举类型的定义 枚举的优点 枚举的使用 3、联合 联合类型的定义 联合的特点 联合大小的计算

Zhou000815的博客 615

PIM-SM 原理简介

转载于:https://blog.51cto.com/itcio/97789

weixin_33962923的博客 975

pyDes 库 DES 与 3DES 加解密

废话不多说,直接开干! 介绍基于 Python pyDes 库实现 DES 与 3DES 加解密 切换 des 与 3des 的地方在 init 初始化函数中 trans_base64=False 是指是否转换为base64,同城是需要转换的! pyDes 库运行效率较低, 条件允许的情况下,可以用 js 代码计算标准加密算法(推荐) import pyDes import base64 class TripleDesUtils: des_mode = {"CBC": pyDes.CB

weixin_37254196的博客 1万+

【MFC】学生数据管理-广州大学程序设计课程设计报告

目录一、课程设计题目及内容二、程序中使用的数据及主要符号说明三、带有详细注释的自己编写的源程序四、程序运行时的效果图五、实验结果分析,实验收获和体会。1、实验结果分析:2、实验收获和体会: 一、课程设计题目及内容 (1)设计一个学生类Student,包括数据成员:姓名、学号、二门课程(面向对象程序设计、高等数学)的成绩。 (2)创建一个管理学生的类Management,包括实现学生的数据的增加、...

RouTine 2855
上一篇: 详解:IE无法打开二级页面
下一篇: 走进PIMShell(5)--Form(窗体)的应用
剑心1977
博客等级 码龄20年 52粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值