基于Extjs的web表单设计器 第六节
- 格式:doc
- 大小:17.14 KB
- 文档页数:24
web前端开发表单课程设计一、课程目标知识目标:1. 学生能理解表单在Web前端开发中的重要性,掌握表单的基本结构。
2. 学生能掌握常用的表单元素及其属性,并了解其在不同浏览器中的兼容性。
3. 学生能学会使用HTML和CSS对表单进行布局和美化,提高用户填写体验。
技能目标:1. 学生能独立完成一个完整、功能齐全的表单页面编写,包括表单元素、布局和样式。
2. 学生能通过运用JavaScript和jQuery等前端框架,实现表单的验证和数据处理。
3. 学生能掌握基本的表单提交方式,了解前后端数据交互的基本原理。
情感态度价值观目标:1. 学生通过学习表单制作,培养细心、严谨的编程习惯。
2. 学生在学习过程中,学会合作、分享,提高团队协作能力。
3. 学生能认识到Web前端开发在互联网行业中的广泛应用,激发学习兴趣,树立职业规划意识。
课程性质分析:本课程为Web前端开发基础课程,重点在于培养学生的实际动手能力和解决问题的能力。
通过学习表单制作,使学生掌握Web前端开发的基本技能,为后续学习打下坚实基础。
学生特点分析:学生为初中或高中年级,具备一定的计算机操作能力和逻辑思维能力。
学生对新鲜事物充满好奇,但注意力容易分散,需要通过实际案例和互动教学激发学习兴趣。
教学要求:1. 教学内容要紧密结合实际,以案例为主线,引导学生掌握表单制作的各项技能。
2. 教学过程中注重启发式教学,培养学生的创新意识和解决问题的能力。
3. 强化实践教学,让学生在实践中掌握知识,提高技能。
二、教学内容1. 表单基础概念:介绍表单的定义、作用及其在Web页面中的应用场景。
- 理解表单的结构与组成- 掌握表单的常用属性和方法2. 表单元素:学习各种表单控件,如输入框、单选框、复选框、下拉菜单等。
- 熟悉各元素的使用方法及其属性设置- 了解不同表单元素的默认行为和样式3. 表单布局与美化:运用HTML和CSS进行表单布局设计,实现美观的表单界面。
ExtJS中表格控件的使用,属性设置和数据的获取ExtJS中表格的特性简介表格由类Ext.grid.GridPanel定义,继承自Ext.Panel,xtype为grid表格的列信息由Ext.grid.ColumnModel定义表格的数据存储器由Ext.data.Store定义,根据解析数据的不同,数据存储器可具体分为如下几种:JsonStore,SimpleStore,GroupingStore…一个表格的基本编写过程:1、创建表格列模型var cm = new Ext.grid.ColumnModel({{header: '角色', dataIndex: 'role'},{header: '等级', dataIndex: 'grade'},{header: '创建日期', dataIndex: 'createDate', type: 'date', renderer: Ext.util.Format.dateRenderer('Y年m月d日')} //创建日期类型的数据});2、创建数据数组var data = [['士兵','7','2011-07-2412:34:56'],['将军','10','2011-07-2412:34:56'],];3、创建一个数据存储对象store,包含两部分:proxy,获取数据的方式;reader,解析数据的方式ArrayReader的mapping用来设置列的排列顺序var store = new Ext.data.Store({proxy: new Ext.data.MemoryProxy(data),reader: new Ext.data.ArrayReader({}, [{name: 'role', mapping: 1},{name: 'grade', mapping: 0}{name: 'createDate', mapping: 2, type:'date', dateFormat:'Y-m-dH:i:s'} //创建日期列和显示格式])});store.load();4、创建GridPanel,装配ColumnModel和storevar grid = new Ext.grid.GridPanel({renderTo: 'grid',store: store,cm: cm});另外获取远程数据可以使用ScriptTagProxy,如下所示var store = new Ext.data.Store({proxy: new Ext.data.ScriptTagProxy({url:'http://...'}),reader: new Ext.data.ArrayReader({}, [{name: 'role', mapping: 1},{name: 'grade', mapping: 0}]),sortInfo: {field: "role", direction: "ASC"} //设置默认排序列,ASC/DESC });表格的常用属性功能var grid = new Ext.grid.GridPanel({enableColumnMove: false, //禁止拖放列enableColumnResize: false, //禁止改变列的宽度stripeRows: true, //斑马线效果loadMask: true, //读取数据时的遮罩和提示功能renderTo: 'grid',store: storecm: cm});var cm = new Ext.grid.ColumnModel({{header: '角色', dataIndex: 'role', width:90, sortable: true}, //width 设置列宽度,默认为100px,sortable设置排序功能{id:'grade', header: '等级', dataIndex: 'grade', width:40}});var grid = new Ext.grid.GridPanel({renderTo: 'grid',store: store,cm: cmviewConfig:{ //让每列自动填充满表格forceFit: trueautoExpandColumn: 'grade' //自动延伸列,列的id在ColumnModel中定义});渲染表格,为表格设置特殊样式只需要在cm里面增加一个renderer属性,添加一个自定义函数来渲染传进来(由EXT自动传递)的参数的样式即可,即在返回value之前拼装上相应的HTML和CSS或者JS响应事件。
web程序设计设计表格
在web程序设计中,设计表格是一个常见的任务。
表格通常用
于展示和组织数据,使用户能够轻松地查看和比较信息。
在设计表
格时,有几个关键方面需要考虑:
1. 数据结构,首先,你需要确定你要在表格中显示的数据的结构。
这包括确定每列需要显示的数据类型(文本、数字、日期等)
以及数据之间的关系。
2. 表格布局,考虑表格的布局是很重要的。
你需要决定表格有
多少列和行,以及是否需要合并单元格或者添加分组等特殊布局。
3. 样式和格式,表格的样式和格式对用户体验至关重要。
你需
要考虑表格的颜色、字体、边框等外观属性,以确保表格清晰易读。
4. 响应式设计,在web程序设计中,响应式设计是必不可少的。
你需要确保你的表格能够在不同设备上(如电脑、平板和手机)上
显示良好,并且能够适应不同的屏幕尺寸。
5. 用户交互,最后,考虑用户与表格的交互。
你可能需要添加
排序、过滤和搜索功能,以便用户能够方便地浏览和操作表格中的数据。
总之,在设计web程序中的表格时,需要综合考虑数据结构、布局、样式、响应式设计和用户交互等多个方面,以确保最终的表格能够满足用户的需求并提供良好的用户体验。
基于Extjs的web表单设计器第七节——取数公式设计之取数公式定义基于Extjs的web表单设计器第⼋节——表单引擎设计 本节我们介绍表单设计器的取数公式设计。
对于⼀个系统来说,我们除了最基本的业务之外,可能针对不同的企业⽤户或者不同的⽣成环境的⽤户会动态的增加⼀些不同于现有业务类型的数据,这也就会导致实际的⽣产环境要求我们的表单控件⽀持不同的数据来源取数。
在这⾥我先抛⼏个问题出来供⼤家思考⼀下:1. ⼀个⽐较复杂的表单的单控件⼀般有⼏种类型?2. 不同类型的控件数据来源形式有哪些?3. 针对这些不同形式的数据来源,我们能不能把它们抽象⼀下下,⽤⼀种⽐较统⼀的⽅式或者⽅法来集中对它们进⾏处理? 我们仔细考虑⼀下这⼏个问题之后,会发现针对问题1表单的控件分类如下图⼀ 通过上⾯的图我们可以看出表单的控件基本上可以抽象的分为简单类型和复杂类型两类控件。
对于问题2我们通过分析这些控件可以发现这⼏种不同控件的数据来源⽆⾮如下图⼆所⽰的⼏种⽅式。
(PS:请注意Sad表情的⼏处地⽅,为什么我要⽤Sad表情,因为这⼏个地⽅通常是我们觉得灰常不好搞的地⽅) ⾄此问题1、问题2都解决了,那么问题3呢?答案是肯定的。
我们当然可以使⽤⼀种⽐较抽象的⽅式来针对不同⽅式的数据来源定义不同的取值⽅式。
取数公式的设计我们可以分为两个部分进⾏分开设计(如下图三所⽰),⼀个是取数公式的定义部分,另⼀个是取数公式的解析部分。
很明显我们除了要定义⼀套取数的公式之外,更重要的是能够解析这些取数公式,这样才能够在表单中灵活的使⽤它们来为我们⼯作。
取数公式的定义开始讲解取数公式的定义之前,先对⼏个概念做个解释,不然看不懂下⾯的图四。
系统资源:⽐如员⼯、组织结构等基础数据,也可以是系统涉及的业务类型、外部单位等等。
总之我们可以把系统中使⽤的任何数据都当成⼀种资源。
这些系统资源在系统中的存储除了它本⾝所具有的属性字段外,⼀般都还包含这些资源的Key、Value值。
Editor Grids(可编辑表格)在之前的一章中我们学习了如何在结构化的表格中显示用户可操作的数据。
但是,这种表格有一个最大的限制,那就是用户无法自己编辑表格中的数据。
幸运的是,Ext提供了EditorGridPanel这一控件,它支持用户对表格进行编辑——我们现在就对这一控件进行学习。
它的工作形式类似于Excel,允许用户在点击单元格后进行数据的编辑操作。
在这章里,我们将会学到:∙为用户提供连接到data store的可编辑表格;∙把编辑后的数据发给服务器,允许用户通过ExtJS的editor grid更新服务器端的数据;∙通过编码操控grid并对事件做出相应;∙教给你一些高级的格式化小窍门并且让您建立更加强大的editor grid。
但是,首先,我们要看看可以用可编辑表格能够做什么事情。
我们能用可编辑表格做什么?EditorGridPanel和我们之前使用到的表单(form)很相似。
实际上,editor gird使用了和form中完全一样的表单字段。
通过使用表单字段来实现对grid单元格进行编辑,我们可以充分利用表单字段提供的同样的功能。
包括输入约束以及数值验证等。
把它和Ext的GridPanel联合起来,就造就了可以满足我们任何需求的漂亮的控件。
这个表格中的所有字段都可以被编辑,如同使用表格字段中的text field(文本字段)、date picker(日期选择器)、combo box(组合框/下拉菜单)一般。
使用可编辑的表格:可编辑和不可编辑表格的区别十一个相当简单的开始的过程。
复杂的使我们需要处理编辑状态然后传回服务器。
但是一旦你学会了如何去做,这部分也就同样变得相当的简单。
让我们先看看如何把第五章开头部分的表格升级到可以编辑电影标题(title)、导演(director)、和标语(tagline)。
修改后的代码如下所示:var title_edit = new Ext.form.TextField();var director_edit = new Ext.form.TextField({vtype: 'name'});var tagline_edit = new Ext.form.TextField({maxLength: 45});var grid = new Ext.grid.EditorGridPanel({renderTo: document.body,frame:true,title: 'Movie Database',height:200,width:520,clickstoEdit: 1,store: store,columns: [{header: "Title", dataIndex: 'title',editor: title_edit},{header: "Director", dataIndex: 'director',editor: director_edit},{header: "Released", dataIndex: 'released',renderer:Ext.util.Format.dateRenderer('m/d/Y')},{header: "Genre", dataIndex: 'genre',renderer: genre_name},{header: "Tagline", dataIndex: 'tagline',editor: tagline_edit}]});为了让grid可编辑,我们需要做四件事情。
低代码表单设计器操作方法低代码表单设计器是一种可视化的工具,用于快速、简便地设计和创建表单。
以下是低代码表单设计器的一般操作方法:1. 打开设计器:打开低代码表单设计器,通常可以在软件的工具栏或菜单中找到相应的选项。
2. 新建表单:在设计器中选择新建表单按钮或菜单项,创建一个新的表单。
可以选择空白表单或根据预设模板创建。
3. 设计表单布局:使用设计器中的工具和功能,设计表单的布局。
可以拖拽和调整表单中各个元素的位置和大小,例如文本框、下拉列表、复选框等。
4. 设置表单属性:为表单添加属性,如表单名称、标题、样式等。
可以通过属性面板或右键菜单进行设置。
5. 定义表单字段:通过设计器提供的工具,向表单中添加字段。
可以选择字段类型(文本、日期、数字等),并设置相应的属性,如标签、验证规则等。
6. 配置表单行为:为表单添加交互行为,例如根据用户的输入显示或隐藏字段、触发事件等。
通过设计器提供的交互式工具进行配置。
7. 样式和主题:为表单选择合适的样式和主题,以达到所需的外观效果。
可以选择预定义的样式或自定义样式。
8. 预览和测试:在设计器中提供预览功能,可以查看表单的实际效果。
还可以进行测试,模拟用户的输入和操作,验证表单的功能和逻辑。
9. 导出和部署:完成表单的设计后,可以导出表单的代码或配置文件。
根据具体的部署方式,将表单部署到相应的环境中,使其可以运行和使用。
总的来说,低代码表单设计器的操作方法相对简单和直观,主要通过可视化的界面和交互式的工具实现表单的设计和配置。
根据具体产品和版本的不同,可能会有一些差异和特殊功能。
因此,具体实施时还需参考产品文档和相关指南。
基于Extjs的web表单设计器第六节基于Extjs的web表单设计器基于Extjs的web表单设计器第一节基于Extjs的web表单设计器第二节——表单控件设计基于Extjs的web表单设计器第三节——控件拖放基于Extjs的web表单设计器第四节——控件拖放基于Extjs的web表单设计器第五节——数据库设计基于Extjs的web表单设计器第六节——界面框架设计基于Extjs的web表单设计器第七节——取数公式设计基于Extjs的web表单设计器第八节——表单引擎设计这一节我给大家介绍一下表单设计器的界面框架设计(这一节距上一节时间有点长了,还望见谅)。
这一节的内容比较简单,主要是结合表单设计器的实际情况介绍一些ext前端界面布局、设计的方式,熟悉ext框架或者常用控件布局的人可以略过。
我们使用的前端框架是Ext,因此表单设计器的前端界面设计都是基于Ext展开。
设计器的总体设计方案为:1.打开设计器后第一层级展现的是目前已有的模板列表信息的一个grid,grid中包含了当前登录所具有操作表单模板的权限。
如(新增模板,编辑模板,发布模板,删除模板,停用模板等功能.)2.选择“新增模板”后,在填出的界面填入必要的模板信息然后“确定”后就会进入设计时界面;此时的设计时界面将会为我们产生一个全新的表单模板画布区域,等待你的设计;3.选中现有的某个模板点击“编辑模板”后,同样会进入设计时界面;此时的设计时界面将会为我们加载并生产该模板已有的表单区域及表单项信息;4.其他操作都不会进入我们的设计时界面;5.设计时界面采用类似Visual Studio 的设计器界面,主要分为左、中、右三个区域。
左侧为控件区域、中间为表单的画布设区域、右侧为属性区域(具体可以参考本系列的开篇的图样)。
基于上面的设计方案,在Ext我们可以采用这样的界面布局方式,第一级panel使用cardlayout,包含一个已有模板列表的grid和另外一个设计时的panel,设计时panel采用左中右的布局方式我们一般使用borderLayout来完成布局。
1 <ext:Panel runat="server" Border="false"Layout="CardLayout" Padding="5" ActiveIndex="0">2 <Items>3 <ext:GridPanel ID="GridPanel1" Title="现有表单模板列表" runat="server">4 <%--其他信息略..--%>5 </ext:GridPanel>6 <ext:Panel runat="server"Border="false" Layout="BorderLayout">7 <Items>8 <ext:TreePanel runat="server" Region="West" RootVisible="false"9 Width="200" Split="true" Collapsible="true" Collapsed="false">10 </ext:TreePanel>11 <ext:Panel ID="Panel2"runat="server" Region="Center" ButtonAlign="Center" Border="true"12 BodyPadding="10" OverflowY="Auto">13 </ext:Panel>14 <ext:Panel ID="Panel3"runat="server" Border="false" Region="East" Width="260"15 AutoScroll="true" Title="控件属性" Split="true" Collapsible="true" Collapsed="false"16Layout="ColumnLayout">17 </ext:Panel>18 </Items>19 </ext:Panel>20 </Items>21 </ext:Panel>设计界面左侧的控件区域我们也在本系列的第二节进行了介绍,这里不再重复,有兴趣的朋友可以去参考第二节——表单控件的设计。
这里主要介绍画布区域和右侧的属性区域。
画布区域就是一个能够接受卡片区域、表格区域及混合区域的控件。
根据前面第二节的表单控件设计一节的介绍,我们其实很容易的就知道了,画布区域其实就是一个混合区域(mixed)类型的panel。
因此上面总体布局代码中的Panel2的代码我们应该修改为:1 <ext:Panel ID="mainPanel" runat="server"Region="Center" ButtonAlign="Center" Border="true"2 BodyPadding="10"OverflowY="Auto">3 <CustomConfig>4 <ext:ConfigItem Name="type" Value="mixed" Mode="Value" />5 </CustomConfig>6 <TopBar>7 <ext:ToolbarID="templateRegionToolbar" runat="server">8 <Items>9 <ext:Button ID="btnEditTemplateJs" runat="server" Text="编辑模板JS 方法" Icon="Pencil">10<Listeners>11<Click Handler="EditTemplateJS(tempJsWin)" />12</Listeners>13</ext:Button>14<ext:ToolbarSeparator ID="ToolbarSeparator1"runat="server" />15 <ext:Button runat="server" ID="btnSaveTplInfo" Icon="Disk" Text="保存模板">16<Listeners>17<Click Handler="SaveTemplateInfo()" />18</Listeners>19</ext:Button>20<ext:ToolbarSeparator ID="ToolbarSeparator8"runat="server" />21 <ext:Button runat="server" ID="btnCancelTplInfo" Icon="Cancel"Text="取消">22<Listeners>23<Click Fn="CancelTplInfo" />24</Listeners>25</ext:Button>26 </Items>27 </ext:Toolbar>28 </TopBar>29 </ext:Panel>介绍完画布区域,就是我们的属性区域设计。
属性区域设计的内容项可能比较多一些,主要是我们要针对表单模板、表单区域、不同类型区域的表单项等内容项设置相关的属性(因为我们的卡片区域和表格区域里面即使都是同一种控件类型,可能所拥有的属性值也不一样,这里列举两个例子1.比如表格区域里面的控件可以具有子级列或者父级列;表格区域里面的数字或者金额控件可以具有选择不同的汇总方式,而我们的卡片区域的子控件是不具有这些属性的;2.卡片区域的子控件都具有占用几列的属性而我们的表格区域的子控件对应的却是实际占用列宽度的属性)。
为了考虑到职责的单一性,以及后期维护修改的简易性,我们考虑针对这几种不同的内容项的属性分别定义各自的功能属性,即使这些控件属性中有些是重复的属性,我们也会使用单独的控件来标记它们,而不是为了节省一个控件而去复用它们。