<!----><!----><!---->
<!---->
进入核心:深入
Window
在上一个部分中,我们对
table
的配置作了比较详细的介绍。前面我们说过,表名被看成了一个默认的
Window
来使用。是的,让我们打开
config
目录下的
window.xml
。哦,这个文件里面什么也没有。我们能看到
window.xml
定义了两个子元素。
<single>
与
<multi>
。其中
<single>
用来定义单窗口操作。
<multi>
用来定义主从关系
(
一对一,一对多
)
的多窗口操作。其中
Single
窗口是
Multi
的基础。我们先进入
Single
的配置。
单窗口配置
所有的单窗口配置都位于
<single>
元素之下。当我们需要定义一个新的
Window
时,需要在
<single>
元素之下添加一个
<window>
元素。
属性介绍
我们先来看
<window>
元素的属性:
Id
:
窗口的唯一标识,在
window.xml
中唯一,同时不可与
table.xml
中的
ID
相同。
Table
:
如果该窗口中定义的所有元素都属于同一张表,则需要定义此项。
Type:
:
窗口的类型,有三个可选项:
1.
popular
也就是示例中
user_demo
的默认类型。
2.
grid
与
1
类似,但他无法执行编辑操作,用于使用
SQL
的窗口展示方案。
3.
single
如果选择了该项,那么
window
的
CRUD
操作都可以在一个页面完成。
Function
:窗口所拥有的功能。包括
” query,add,update,delete”
。各项功能之间使用逗号分隔。对于窗口类型为
grid
的,除
query
功能以外,其它功能都即使定义了也将是无效的。
Css
:
定义了该窗口要使用的样式文件。如果定义了,那么该
css
文件必须要在
cwin/css
目录下能找到。
子元素介绍
<window>
允许的子元素有以下几种:
<desc>,<fields>,<form>,<grid>,<
extra>,< sql>,< limits>
下面我们来逐项介绍
window
的子元素。
desc:
描述
这一项最简单了,就是这个
Window
的描述。将直接显示在页面上。
fields:
字段列表
他包含了这个
Window
的所有字段。他的子元素与
table
配置中的
table
元素的子元素一致。包含了一系列的
<field>
元素列表。
<field>
的元素与
table.xml
中的
<field>
定义完全一致。如果
Window
定义了
table
属性,
Cwin
会自动引用在
table.xml
中定义的相同
name
的元素。如果
Window
没有定义
table
属性,那么为了使
field
引用到已有的
field
定义,需要将引用将要写为:
<field ref=”table.field”/>
的形式,有关元素的引用详细介绍,请参看上一章的元素引用部分。如果您的字段是一个聚合函数的结果,在
table.xml
中没有定义,那么,就需要在此为这个字段作一个定义。
form:
编辑表单配置
form
的配置比较简单,他只有两个属性:
alertErrorMsg
:是否跳出错误信息?选项为
boolean
类型。如为
false
将在页面上显示错误信息。
cols
:定义了编辑表单一行输出的列数。
grid
:输出表格配置
grid
包括四个内置属性与六个自选属性。自选属性的意思是在
xml
中定义之后会原样输出在前台
HTML
中。比如样式,表格高度等等。
四个内置属性包括:
pageSupport
:是否需要分页支持。默认为
true
containsSn
:是否在输出时包括列号,默认为
true
containsCheckboxL
是否有输出时包含单行框,默认为
false
pageSize
:分页时每页的记录数
六个自选属性包括:
cellspacing, cellpadding, style,
class,width, height
这里需要注意的是,
width
与
height
是字符串型,值可以是整数或是百分数。比如
width=”100%”
,也可以是
width=”1024px”
。当然,这些都在
css
中有默认的定义。
extra
:扩展列定义
扩展列的意思就是在输出表格时多加上的列。
它可以包含一系列的
<output>
子元素,
<output>
元素的定义与
<field>
的子元素
<output>
的定义方式一致。具体定义方式请查看
<field>
的子元素
<output>
的定义。
sql
:查询定义
Cwin
支持根据
SQL
来展示查询表格。
sql
元素用来定义查询语句。需要注意的是:查询的字段需要在
<fields>
中定义,否则在查询列表中就看不到了。
limits
:查询与输入限制
limit
子元素用来定义这个
Window
的限制。定义了这个限制,在查询时将自动将
limits
配置加为查询条件,插入数据时也将以
limits
配置为默认值。
Limits
子元素由一系列的
<limit name=”field” value=”fieldValue”>
值组成。
示例
1
现在,老板提出了一个需求:
用户列表的名字需要改为:用户管理中心
密码不要显示在表格与编辑表单,新增的密码都需要是:
123456
展示表格每页以
20
条记录显示。
要求只管理普通用户。
不允许删除操作。
加一个广告列链接到
Cwin
作者的
BOLG
。
界面的
css
需要换一套方案。
OK
,我们按照老板的需求,根据上面
Window
定义的介绍。给出了一个
window
的定义:
<window id="user_demo_1" table="user_demo" type="popular" function="query,add,update">
<desc> 用户管理中心 </desc>
<fields>
<field name="id"/>
<field name="login_name"/>
<field name="type"/>
<field name="create_time"/>
<field name="intro"/>
</fields>
<grid pageSize="20"/>
<extra>
<output desc="blog" dispMode="link" href="http://sunarrow.iteye.com/"/>
</extra>
<limits>
<limit name="type" value="0"/>
</limits>
</window>
哦,有一个问题比较麻烦,就是密码的默认值。这个我们得修改
table.xml
的
password
字段定义。修改为:
<field name="password"
desc="
密码
"
minLen="6" maxLen="20" store="md5" default=”123456”>
,好了,将我们的
window
定义加入到。
<sinlge></single>
元素之间。打开我们的浏览器,访问:
http://localhost:8080/cwin/cwin?_CWIN_ID=user_demo_1
吧!
用户可以将
window
的
type
改为
single
试试!
示例
2
:
SQL Grid
由于使用单表的
SQL
查询展现
SQL Window
不太够用。请诸位读者先读完下一章节再回到这个示例。
OK
,我们现在在
user_demo
与
user_demo_ex
表里都有了数据。有一天,老板要求在一个表格中将用户基础信息与扩展信息同时展示出来,并且要求能根据登录名与真实姓名查询。嗯,这个很简单,一条
SQL
语句就能把数据查出来。写好
SQL
如下:
select
u.id,u.login_name,u.email,u.type,u.intro,ex.real_name,ex.tel,ex.address,ex.postcode
from user_demo u left join user_demo_ex ex on (u.id = ex.id)
那么,如何在
Cwin
中配置呢?废话不说了,直接上配置:
<window id="user_demo_and_ex" type="grid" function="query">
<desc> 用户以及他的扩展信息 (SQL 查询 )</desc>
<fields>
<field ref="user_demo.id" isKey="true" fullName="u.id"/>
<field ref="user_demo.login_name" cond="like" fullName="u.login_name"/>
<field ref="user_demo.type" order="u.type"/>
<field ref="user_demo.email"/>
<field ref="user_demo.intro"/>
<field ref="user_demo_ex.real_name" cond="like" fullName="ex.real_name"/>
<field ref="user_demo_ex.tel"/>
<field ref="user_demo_ex.address"/>
<field ref="user_demo_ex.postcode"/>
</fields>
<extra>
<output desc="BLOG" title=" 请帮忙多发些评论啊 !" dispMode="link" href="http://sunarrow.iteye.com?id=[id]"/>
</extra>
<sql>select u.id,u.login_name,u.email,u.type,u.intro,ex.real_name,ex.tel,ex.address,ex.postcode from user_demo u left join user_demo_ex ex on (u.id = ex.id)</sql>
</window>
这就是全部的配置。我们需要显示的字段都各自引用了所在表定义的元素。如:
(ref=”user_demo.type”)
。另外我们可以看到登录名与真实姓名列我们定义了查询。用户类型列定义了排序。从这个配置中您也应该能理解
fullName
这个属性的含义了。因为在比较复杂的
SQL
中,排序时将需要写上全名甚至是聚合函数。
Order
属性也是如此。
动态参数与通过
URL
对页面的引用
动态参数
现在大老板又有新的需求了,他需要管理那些管理员。在
user_demo_1
中,我们把
<limits>
元素删除,这样我们可以管理所有的用户。现在我们可以通过动态参数来管理管理员。
目前:管理所有用户的
URL
是:
http://localhost:8080/cwin/cwin?_CWIN_ID=
user_demo_1
那么通过动态参数,管理普通用户的
URL
是:
http://localhost:8080/cwin/cwin?_CWIN_ID=
user_demo_1&user_type=0
管理管理员的
URL
是:
http://localhost:8080/cwin/cwin?_CWIN_ID=
user_demo_1&user_type=1
动态参数的参数是在
Window
中定义的字段名。参数的值将作为
Window
的查询默认值与新增时的值。功能上相当于动态的定义了
<limits>
元素。但动态参数无法覆盖在
<limits>
中定义的限定。
通过
URL
对页面的引用
在前面的例子中,使用过一个这样的输出配置:
<output dispMode="link"
href="cwin?_CWIN_ID=user_demo&_CWIN_ACTION=show&id=[id]"
target="_blank"/>
。这个输出配置表示:用来查看
Window
user_demo
的展示页,显示
id
为
[id]
的用户信息,其中
[id]
是一个变量。
同样的,如果我们需要引用这个用户的编辑页面,那么
URL
可以这样写:
cwin?_CWIN_ID=user_demo&_CWIN_ACTION=toEdit&id=[id]
。其中
_CWIN_ID
与
_CWIN_ACTION
是系统参数,分别表示
Window ID
和动作。
_CWIN_ACTION
的另外两个可选项是
query
和
delete
。也就是说,通过
URL
能引用
Window
的查询页也能直接删除
Window
中的数据。
多窗口配置
多窗口配置都集中在
<multi>
子元素以下。
每一个
Multi-Window
由一个
<pri-sec>
元素定义。
目前多窗口配置支持一对一与一对多模型。
实际上,一对一与一对多的配置除了属性
type
以外完全相同。
现在,我们来看看
<pri-sec>
的属性:
属性介绍
Id
:这个属性就不用介绍了,要求唯一。
Type
:多窗口类型,有两个可选项:
oneone
、
onemany
。这很好理解,分别定义一对一与一对多。
Primary
:主窗口,必须是一个
Single Window
。
Secondary
:从窗口,也必须是一个
Single Window
。
Trigger
:调用从窗口的方式。有两个选项:
auto
:自动,当选中一行主表数据时会自动调用从窗口。
opt
:手动,将在主窗口的展示表格中新加一列。点击之后将调用从窗口。
子元素介绍
Multi-Window
的子元素比较简单,只有一个描述
(desc)
和一组关系
(relations)
。
desc
元素:
Multi-Window
的描述。
relations
元素:可以包含不定数量的
relation
子元素。
relation
元素:它的属性有:
primary
,要求是主窗口中的一个字段。
secondary
:要求是从窗口中的一个字段。它俩应拥有主从窗口之间的关联关系。
一对一演示
为了我们能使用一对一的演示,我们需要新建一张
user_demo_ex
的扩展表。
CREATE TABLE `user_demo_ex` (
`id` int(11) NOT NULL auto_increment,
`real_name` varchar(30) default NULL,
`tel` varchar(20) default NULL,
`address` varchar(100) default NULL,
`postcode` varchar(10) default NULL,
`create_time` datetime default NULL,
`modify_time` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
直接上配置:
<pri-sec type="oneone" id="user_demo_ex_oo" primary="user_demo" secondary="user_demo_ex" trigger="auto">
<desc> 测试,用户--与用户扩展,一对一关系 </desc>
<relations>
<relation primary="id" secondary="id"/>
</relations>
</pri-sec>
同样的,在
URL
中使用
id
来访问这个一对一的演示。
在目前的版本中,多窗口的页面还有一些已知的
BUG
,不过并不会损坏数据。
一对多演示
暂无
分享到:
相关推荐
在VC++编程环境中,"VC继承于CWin的透明时钟"是指利用MFC(Microsoft Foundation Classes)库中的CWin类进行派生,创建一个具有透明效果的时钟控件。这种技术通常用于构建用户界面,使时钟可以无缝融入到其他图形...
【Dartou_cwin5: ActionScript3.0框架】是一个由深圳市大头互动文化传播有限公司开发的开源框架,专门针对ActionScript3.0编程语言设计。这个框架旨在提高开发效率,提供一套完整的解决方案,用于创建丰富的互联网...
1. **窗口类定义**:定义一个C++类,如`CWin32Window`,该类需要包含必要的成员变量,如窗口句柄(HWND)、窗口类名(LPCWSTR)等。 2. **初始化**:在类中提供一个初始化函数,用于设置窗口类属性,如窗口风格(WS...
在Microsoft Visual C++ (VC++) 开发环境中,创建一个继承自CWin的实时曲线控件是一种常见的需求,尤其是在开发涉及到图形界面和数据可视化的应用程序时。CWin是MFC(Microsoft Foundation Classes)库中的基类,它...
4. CWin32Window.cpp:可能与Windows窗口对象相关,用于创建和管理Winamp插件的窗口。 5. docking.cpp:可能涉及插件在Winamp界面中的停靠和布局逻辑。 6. wafuncs.cpp:可能包含了Winamp API的函数实现,这些API...
5. `CWin32Window.cpp`:可能包含了Windows API窗口处理的代码。 6. `docking.cpp`:可能涉及到窗口的停靠功能,使插件可以自由地在Winamp界面上移动和调整大小。 7. `wafuncs.cpp`:可能包含Winamp API函数的封装,...
例如,敏感数据通常不建议通过查询字符串传递,因为可能会被浏览器历史记录或者第三方工具截取。而对于非敏感数据,简单的方法如查询字符串或隐藏字段就足够了。 总结来说,弹出窗口间的值传递是Web开发中的常见...
标题中的“明基 8180C 扫描仪 驱动”指的是明基公司生产的8180C型号扫描仪的驱动程序。在计算机硬件系统中,驱动...同时,如果在安装或使用过程中遇到问题,可以查阅官方的用户手册,或者联系明基的客户服务获取帮助。
5. CWin32Window.cpp:这可能是处理Win32窗口和用户交互的代码,用于创建和管理插件的界面元素。 6. docking.cpp:可能涉及到插件的浮动和停靠功能,允许用户自由安排分析器在Winamp窗口中的位置。 7. wafuncs.cpp:...
CWinListBox是Windows GUI编程中的一个重要组成部分,它允许用户在列表中选择一个或多个项目。在MFC中,列表框通常由CListBox类表示,但为了满足特定需求,有时需要对其进行扩展和自定义。在标题中提到的...
Yah3cWin 中山大学东校区(位于 HEMC 高等教育中心)Windows 上的 Yah3c 客户端项目背景这是一个很早的项目,2013年7月开始。当时我想对SYSU Yah3c客户端做一些改进。 众所周知,Yah3c客户端是中山大学学生永远不会...
3. **指定镜像文件保存位置和名称**:进入镜像文件存储目录,默认存储目录通常是启动Ghost的目录。在“Filename”处输入镜像文件的名称,例如“D:\sysbak\cwin98.gho”,然后按回车键确认。 4. **选择压缩级别**:在...
- `CWin`类是游戏的核心,包含了一个15x15的二维数组`chess`,用于存储棋盘的状态。它还提供了`init()`方法初始化棋盘,`win(int x, int y)`方法检查给定位置(x, y)是否有五子连珠,这通常是通过遍历棋盘并检查相邻...
- Ghost的核心备份原理是基于扇区级别的复制,这意味着它能够完整地复制整个分区或磁盘的数据,包括系统文件、应用程序以及用户数据等。 - 由于这种复制方式的特性,在操作时需要格外小心,以免误操作导致数据丢失...
然而,由于GHOST当前仅支持DOS运行环境,用户需通过启动软盘、U盘或启动光盘进入DOS环境后方可使用,这在一定程度上限制了其使用场景,但并未妨碍其在硬盘备份领域的广泛应用。 #### 二、GHOST操作界面与基本功能 ...
一键GHOST硬盘版是一款常用的系统备份与恢复工具,尤其适合对电脑操作不太熟悉的用户。它提供了简单易用的界面和自动化流程,使得系统备份和恢复变得轻松快捷。下面将详细介绍如何使用一键GHOST硬盘版进行系统备份和...
3. **配置硬件**:在安装过程中,系统会询问有关硬件的详细信息,如内存大小、显示卡类型等,以便优化设置。 4. **创建桌面**:Windows 3.1会创建一个新的桌面环境,包括图标、任务栏和开始菜单的雏形。 5. **安装...
`FormatMessage`函数是Windows API的一部分,它的主要作用是从系统消息表中提取字符串。这些字符串可以包括错误信息、警告信息、状态信息等。当你有一个错误代码,并想获取与之对应的详细错误信息时,`FormatMessage...
经过上述调整,这个高度自适应的`iframe`解决方案能够在IE、FF和Opera上正常工作,不再出现纵向滚动条,确保了用户体验的一致性。然而,值得注意的是,这个方法可能不适用于所有情况,例如Safari、Chrome等其他...
"打印机配置工具"是软件应用程序,它允许用户自定义和优化打印机的设置,如打印质量、纸张类型、分辨率等。通过这个工具,用户可以根据具体任务调整打印机参数,确保打印效果达到预期。 "指纹密码保险箱"是一种安全...