DWZ使用注意事项

DWZ使用注意事项

一、前言

在最近的一个项目,介绍DWZ丰富client框架,可以尝试一下。另外,在遇到的很多问题。十一终于攻克。

特别说明本文的。

本人用的是dwz-ria-1.4.5+Asp.net webform,写这篇笔记时最新版本号已经是1.4.6了。DWZ官方网址

二、文件夹结构

dwz-ria-1.4.5.zip解压后,文件夹结构见下图2.1。

当中js:dwz的核心脚本代码。

themes:css样式,提供了default、azure、green、purple、silver等皮肤;

uploadify:文件上传控件。

图2.1

三、JS说明

3.1,dwz.core.js:dwz的基石。用的比較多的是String的扩展方法,ajaxError(ajax error时的默认处理)、ajaxDone(ajax success时的默认处理)。

client接收到的asp.net webmethod返回值。多了层d。

dwz中ajax方法接受的返回值是{statusCode:xx,message:‘xxxx‘}这种格式,在后台webmethod返回这种格式。前台js接收到的{d:{statusCode:xx,message:‘xxxx‘}}。

obj2str、jsonEval是dwz提供的序列化/反序列化json的函数,在使用中发现存在bug,建议使用json2.js的。

3.2。dwz.ajax.js:dwz提供的ajax函数。

有分页处理(navTabAjaxDone、dialogPageBreak)、ajax success时的回调函数(navTabAjaxDone、dialogAjaxDone)。

navTab、dialog是两种页面显示方式,navTab:以标签页显示的画面。dialog:弹出式的画面。

3.3,dwz.ui.js:画面的初始化处理。function initUI(_box)就是对一系列的dwz标签进行初始化,第三方控件的初始化也要放在这里。Jquery的ready事件运行后,才会运行initUI,我在项目中用了editable-select、treetable两个控件,一開始是放在ready事件里初始化的,碰巧他们的class和dwz的重名,调试时怎么也出不来那个效果,后来看调试代码才发现不能写在ready里。

3.4,dwz.barDrag.js:左边活动面板的隐藏、显示

3.5,dwz.stable.js、dwz.cssTable.js:dwz提供的两种表格。相应的标签各自是class=‘table‘/class=‘list‘。

csstable仅仅支持排序;

stable功能多些,支持排序。列幅的调整等。

它实际上是把原先的一个表格变成了2个,一个是包括列标题的表格。一个就仅仅有数据行的表格。拖动列标题时,会对应调整还有一个表格的列宽。使用过程中发现生成的表格,主要是数据行的那个没有id/name了,没法往里面动态加入数据了,所以改动了下源码。

从显示效果看。csstable行与行之间没有细线分隔,stable的就有。对照两者的css。在 \themes\css\core.css文件。

/* CSS Table */

table.list td 这行添加border-bottom: solid 1px #ededed;

设置td底部边框的线型、宽度、颜色。

不足的地方:stable动态生成了表头列(表格)。在右側加入了纵向滚动栏。所以会调整html中设置好的列宽。遇到多行表头、空数据行(新增画面,初始时没有数据行,执行时加入数据)这种场景,表头列和数据列会错位。

这时改用csstable或改动stable源码(我是改用csstable了)。

3.6,dwz.dialog.js:弹出画面用的。$.pdialog.getCurrent():获取当前的弹出画面

3.7。dwz.navTab.js:标签页画面用的。navTab.getCurrentPanel():获取当前的标签页对象

四、UI布局

通常在login.aspx页面登录后,进入index.aspx(dwz-ria-1.4.5.zip中的index.html)页面。这个是主页面,项目中要引用的js,css文件都是在这里载入。

页面布局:


div id="header"。页面的标题部分

div id="leftside"

主菜单部分


div id="container"

主体部分,多标签页形式显示                             


div id="footer"。

页脚部分

navTab/dialog页面的html代码,不是像寻常那样写成<html><head/><body/></html>这种格式。

而是像下图所看到的的格式那样。

以下说下项目中使用的几种典型界面

4.1,查询画面

<h2
class="contentTitle">xxxx列表</h2>

<cc1:PagingForm ID="pagerForm"
runat="server" ActionUrl="xxx" />

<div
class="pageHeader">

<form
id="Form1" onsubmit="return navTabSearch(this);"
action="xxxx"
method="post"
runat="server">

<div
class="searchBar">

<table
class="searchContent">

<tr>

<td>

编号:<input
type="text"
name="xxxx"
value="xxxx" />

</td>

<td>

名称:<input
type="text"
name="xxxxx"
value="xxxx"/>

</td>

</tr>

</table>

<div
class="subBar">

<ul>

<li><div
class="buttonActive"><div
class="buttonContent"><button
type="submit">检索</button></div></div></li>

</ul>

</div>

</div>

</form>

</div>

<div
class="pageContent">

<asp:Repeater ID="Repeater1"
runat="server" OnItemDataBound="Repeater1_ItemDataBound">

<HeaderTemplate>

<table
class="table"
width="100%" layoutH="208">

<thead>

<tr>

<th
width="40">序号</th>

<th
width="120">编号</th>

<th
width="150">名称</th>

<th
width="80">操作</th>

</tr>

</thead>

<tbody>

</HeaderTemplate>

<ItemTemplate>

<tr>

<td><asp:Literal
runat="server"
ID="lblRownumber" /> </td>

<td><%#NvStr(Eval("Code"))%> </td>

<td><%#NvStr(Eval("Name"))%> </td>

<td><asp:Literal
runat="server"
ID="lbtCommand" />

</td>

</tr>

</ItemTemplate>

<FooterTemplate>

</tbody>

</table>

</FooterTemplate>

</asp:Repeater>

<cc1:PagingFoot runat="server"
ID="pagingFoot"/>

</div>

4.2,单表的新增/编辑画面

代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xxxx.aspx.cs" Inherits="xxxx" %>

<div
class="pageContent">

<form
method="post"
id="xxxx"
class="pageForm required-validate"

onsubmit="return validateCallback(this, navTabAjaxDone);">

<div
class="pageFormContent" layoutH="56">

<p>

<label>名称:</label>

<input
name="name"
class="required"
type="text"
size="30" />

</p>

<p>

<label>总计:</label>

<input
name="total"
type="text"
size="30"
class="required number" />

</p>

</div>

<div
class="formBar">

<ul>

<li
class="continue">

<input
type="checkbox"
checked="checked"
class="checked"
id="continue"/>继续加入

</li>

<li><div
class="buttonActive">

<div
class="buttonContent">

<button type="button"
name="btnSave"
onclick="">加入</button>

</div>

</div></li>

<li>

<div
class="button">

<div
class="buttonContent">

<button type="button"
class="close">关闭</button>

</div>

</div>

</li>

</ul>

</div>

<script
type="text/javascript">

$().ready(function () {

xxxx.initDetailFormData(null);

});

</script>

</form>

<iframe class="T_iframe"></iframe>

</div>

a。<button type="button"
class="close">。dwz会为class=close的加入一个关闭页面的动作。

b,<iframe class="T_iframe">,这个是为了解决IE6,select框覆盖弹出层的bug。參照了“IE6 select遮挡div问题”这篇文章

4.3。主子表的新增/编辑画面

<h2
class="contentTitle">xx填报</h2>

<div
class="pageContent">

<div
class="panel" defH="200">

<h1>基本信息</h1>

<div
class="pageFormContent">

<p>

<label>编号:</label>

<input
name=""
readonly="readonly"
type="text"
size="30" />

</p>

<p>

<label>名称:</label>

<input
name=""
class="required"
type="text"
size="30"
style="ime-mode:active;" />

</p>

<p>

<label>项目负责人:</label>

<input
name=""
type="text"
size="30"
style="ime-mode:active;" />

</p>

</div>

</div>

<div
class="divider"></div>

<div
class="panelBar">

<ul
class="toolBar">

<li><a
class="button"
onclick=""><span>加入</span></a></li>

</ul>

</div>

<asp:Repeater ID="Repeater1"
runat="server" OnItemDataBound="Repeater1_ItemDataBound">

<HeaderTemplate>

<table
class="table"
width="100%" layoutH="385"
id="xxxx" nowrapTD="false">

<thead>

<tr>

<th
width="200">名称</th>

<th
width="150">型号规格</th>

<th
width="100">数量</th>

<th
width="120">单位价格(元)</th>

<th
width="150">总计(元)</th>

<th
width="100">操作</th>

</tr>

</thead>

<tbody>

</HeaderTemplate>

<ItemTemplate>

<tr
class = "unitBox"
data-tt-id=""
data-tt-parent-id=""
ondblclick="">

<td>xxx</td>

<td>xxx</td>

<td>xxx</td>

<td>xxx</td>

<td>xxx</td>

<td>xxx</td>

</tr>

</ItemTemplate>

<FooterTemplate>

</tbody>

</table>

</FooterTemplate>

</asp:Repeater>

<div
class="formBar">

<ul>

<li>

<div
class="buttonActive">

<div
class="buttonContent"><button
type="button"
onclick="">保存</button>

</div>

</div>

</li>

</ul>

</div>

</div>

a。主表的输入项最外层套了个<div
class="panel" defH="200">。早先是没写这个,就<div
class="pageFormContent">(这个和子表的<table>平级。如今是<div
class="panel" defH="200">和<table>平级)。那样写,当pageFormContent里有select控件时,在IE6下显示位置会错乱。后来加上这个panel就好了。

b,<tr
class =
"unitBox" data-tt-id=""
data-tt-parent-id="">这个写法是用到了TreeTable这个Jquery控件。

4.4。主子表+多标签页的新增/编辑画面

与前一节的差别是,我用多标签页的形式显示子表的数据。

<h2
class="contentTitle">xxxx填报</h2>

<div
class="pageContent">

<div
class="panel" defH="220">

<h1>基本信息</h1>

<div
class="pageFormContent">

<p>

<label>编号:</label>

<input
name=""
readonly="readonly"
type="text"
size="30" />

</p>

<p>

<label>名称:</label>

<input
name=""
class="required"
type="text"
size="30"
style="ime-mode:active;" />

</p>

<p>

<label>负责人:</label>

<input
name=""
type="text"
size="30"
style="ime-mode:active;" />

</p>

</div>

</div>

<div
class="divider"></div>

<div
class="tabs" currentIndex="0" eventType="click">

<div
class="tabsHeader">

<div
class="tabsHeaderContent">

<ul>

<li><a
id=""
href="javascript:;"><span>客户列表</span></a></li>

<li><a
id=""
href="x1.aspx"
class="j-ajax"><span>材料列表</span></a></li>

<li><a
id=""
href="x2.aspx"
class="j-ajax"><span>xx列表</span></a></li>

<li><a
id=""
href="x3.aspx"
class="j-ajax"><span>xx列表</span></a></li>

<li><a
id=""
href="x4.aspx"
class="j-ajax"><span>xx列表</span></a></li>

<li><a
id=""
href="x5.aspx"
class="j-ajax"><span>xx列表</span></a></li>

<li><a
id=""
href="x6.aspx"
class="j-ajax"><span>xx列表</span></a></li>

</ul>

</div>

</div>

<div
class="tabsContent" layoutH="420">

<div>

<div
class="panelBar">

<ul
class="toolBar">

<li><a
class="button"
onclick=""><span>加入</span></a></li>

</ul>

</div>

<asp:Repeater ID="Repeater1"
runat="server" OnItemDataBound="Repeater1_ItemDataBound">

<HeaderTemplate>

<table
class="list"
width="100%" layoutH="420"
id="tbAllocatedUnits" nowrapTD="false">

<thead>

<tr>

<th
width="200">客户名称</th>

<th
width="120">xxxx</th>

<th
width="200">xxxx</th>

<th
width="120">操作</th>

</tr>

</thead>

<tbody>

</HeaderTemplate>

<ItemTemplate>

<tr
ondblclick="">

<td>xxx</td>

<td>xxx</td>

<td>xxx</td>

<td>xxx</td>

</tr>

</ItemTemplate>

<FooterTemplate>

</tbody>

</table>

</FooterTemplate>

</asp:Repeater>

</div>

<div></div>

<div></div>

<div></div>

<div></div>

<div></div>

<div></div>

</div>

<div
class="tabsFooter">

<div
class="tabsFooterContent"></div>

</div>

</div>

<div
class="formBar">

<ul>

<li><div
class="buttonActive">

<div
class="buttonContent"><button
type="button"
onclick="ScienceBudget.saveBudget();">保存</button>

</div>

</div>

</li>

</ul>

</div>

</div>

a,<div class="tabsHeaderContent">内的标签数目要和<div class="tabsContent">里的子div个数一致。

一个标题相应<div class="tabsContent">里的一个div。

b。 <div
class="tabs" currentIndex="0" eventType="click">中currentIndex指定了初始显示第一个标签页的内容。

c。其它标签页的标题都是这样写的<a
id=""
href="x1.aspx"
class="j-ajax">,用ajax方式载入href页面的html,

所以在<div
class="tabsContent">里。除了第一个子div里写了内容,其它几个子div都是空的(<div></div>),

点击这个标签页后将加载页面。

这将先写到这里。
原文地址:http://www.cnblogs.com/wordmy/p/3219760.html
时间: 2024-08-28 23:37:44

DWZ使用注意事项的相关文章

面向对象注意事项

在面向对象中,有实例变量和类变量,实例变量为类对象的实例成员,而类变量不仅类可以直接调用,而且类的对象也可以调用.类对象可以对实例变量进行添加.修改.删除操作等... 下面就用个示例来做参考: #!/usr/bin/env python # -*- coding:utf-8 -*- class PersonInfo(object): commity_data = 123 def __init__(self,name,age): self.name = name self.age = age de

DWZ富客户端HTML框架

一.了解 概述:是中国人自己开发的基于jQuery实现的Ajax RIA开源框架. 目的:简单实用.扩展方便(在原有架构基础上扩展方便).快速开发.RIA思路.轻量级 使用:用html扩展的方式来代替javascript代码 思路:根据官网页面样例,查看官方代码包,查阅相关子页面,参阅帮助文档,添加固定的标签属性语法 优势:第一次打开页面时载入界面到客户端, 之后和服务器的交互只是数据交互, 不占用界面相关的网络流量,开源免费 劣势:文档少,开发者少,共享资源少,帮助文档不易阅读 二.资料 官方

数据校验validator 与 DWZ

在做系统时经常会用到数据校验,数据校验可以自己写,也可以用现在成的,现在记录下两种类库使用方法, validator <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="pragma" content="n

switch使用时有哪些注意事项

switch语句用于多分支选择,在使用switch(expr)的时候,expr只能是一个枚举常量(内部也是由整型或字符类型实现)或一个整数表达式,其中整数表达式可以是基本类型int或其对应的包装类Integer,当然也包括不同的长度整型,例如short.由于byte.short和char都能够被隐式地转换为int类型,因此这些类型以及它们对应的包装类型都可以作为switch的表达式.但是,long.float.double.String类型由于不能够隐式地转换为int类型,因此它们不能被用作sw

Citrix Xen 6.2 在Adaptec raid 6805卡子上的安装注意事项

Installing with Citrix XenServer   Note: To install the Adaptec RAID controller driver with CitrixXenServer, you must burn the XenServer driver iso image to a writeable CD. Youwill be prompted to insert the XenServer driver CD twice.You need the XenS

CloudStack添加新的API注意事项

1.***Cmd上面的@APICommand里的responseObject关联对于的Response: 2.在tomcatconf/command.properties.in添加新API的权限: 3.为得到Cmd,都需要实现PluggableService接口的getCommands()方法,核心Cmd都需在ManagementServerImpl类的getComands()方法里将新添加的***Cmd类添加到cmList中. CloudStack添加新的API注意事项,码迷,mamicode

开发APP注意事项

开发APP的时候要注意的一些事项?随着互联网的高速发展,移动APP也如雨后春笋般快速发展.营销战略也逐渐从PC端转为移动端,开创新的营销道路--移动营销.面对移动APP的火热,越来越多的企业和商家们重视移动营销这一块,也迫切开发属于自己的企业APP. 移动开发大师表示:"我们在热衷开发APP的同时也要注意一些事项,以免造成资源的浪费."下面让麦子学院老师来告诉你,当你在开发APP的时候要注意的一些事项: 首先,如果你要开发APP首先第一件事就是做好充分的市场调查,明确知道你要开发什么样

复合索引的优点和注意事项

概念:     单一索引是指索引列为一列的情况,即新建索引的语句只实施在一列上;     用户可以在多个列上建立索引,这种索引叫做复合索引(组合索引);     复合索引在数据库操作期间所需的开销更小,可以代替多个单一索引;     同时有两个概念叫做窄索引和宽索引,窄索引是指索引列为1-2列的索引,宽索引也就是索引列超过2列的索引;     设计索引的一个重要原则就是能用窄索引不用宽索引,因为窄索引往往比组合索引更有效; 使用:     创建索引     create index idx1 o

Jetson TX2安装Jetpack 3.0注意事项

Jetson TX2安装Jetpack 3.0注意事项 nvidia jetson tx2配置caffe: http://blog.csdn.net/jiongnima/article/details/70040262 CSDN jiongnima博主的这篇文章非常详细完整,但是作为一个初次接触nvidia jetson TX2的人来说,还是会难免遇到一些困难,下面我在这篇文章的基础上,写一些我在安转Jetpack 3.0时遇到的问题,希望大家可以坐在以后的安装过程中规避这些问题:  1.在nv