FineUI好处之一在于No JS,这里的No JS并不是不使用JS,JS对于ASP.Net是必不可少的,只是FineUI把大部分JS封装,如果想用,后台提供了很多方法返回JS,Get...Reference都是返回JS代码用的,不仅在一些简单的页面前台变的很干净,而且大大减少了开发周期。我也学习了这个优点,集合FineUI打包了很多跟项目有关的通用JS,比如弹出选择人员窗口,选择部门窗口,弹出页面的功能后台点击事件可以解决,但我绑定了OnClientClick 事件要比触发后台的OnClick事件快了很多,关闭了按钮的EnablePostBack属性就是执行前台JS不用回发,感觉很受用。

分享几个提取出来的JS以结合程序逻辑方便使用

1.Window控件显示

01.F('windowID').f_show(strURL, '选择部门', 900, 500);

  发送URL,title,大小。这里要注意控件的ClientIDMode="Static"属性,要不前台获取不到

2.显示隐藏控件

EXTJS我也没学过,找了好久才找到,这个代码实现了前台隐藏一个模块,我把查询放里面了,因为RegionPanel缩回去又弹出一块来,不能说不好看但占的地大了,查询条件多又没地放,查完了手动隐藏,后台回发的方法也能实现但是有点慢,.hidden是获取显示状态 setVisible设置。

01.<f:RegionPanel ID="RegionPanel1" runat="server" ShowBorder="false">
02. <Regions>
03. <f:Region ClientIDMode="Static" runat="server" ShowBorder="true" ID="Region1" Position="Top"
04. ShowHeader="false" Title="查询" Hidden="true" Split="true" EnableCollapse="false"
05. HideMode="Visibility">
06. <Items>
07. <f:Form runat="server" LabelAlign="Right" ShowBorder="false" ShowHeader="false" ID="Form2"
08. Collapsed="False" BoxConfigAlign="Center">
09. <Rows>
10. <f:FormRow runat="server" ColumnWidths="50% 50%">
11. <Items>
12. <f:TriggerBox TriggerIcon="Search" ClientIDMode="Static" ID="txtUseDeptName" runat="server"
13. Label="部门" BoxMargin="10" EnableEdit="false" EmptyText="请选择部门" >
14. </f:TriggerBox>
15. <f:DropDownList runat="server" ClientIDMode="Static" ID="ddlPos" Label="职位">
16. </f:DropDownList>
17. </Items>
18. </f:FormRow>
19. <f:FormRow ID="FormRow1" runat="server" ColumnWidths="50% 50%">
20. <Items>
21. <f:TextBox Label="登录名" ClientIDMode="Static" ID="txtLgName" runat="server">
22. </f:TextBox>
23. <f:TextBox Label="用户名" ClientIDMode="Static" ID="txtUserName" runat="server">
24. </f:TextBox>
25. </Items>
26. </f:FormRow>
27. </Rows>
28. <Toolbars>
29. <f:Toolbar runat="server">
30. <Items>
31. <f:Button Text="查询" Icon="Magnifier" OnClick="btnQuery_Click" runat="server" ID="btnQuery">
32. </f:Button>
33. <f:Button EnablePostBack="false" Text="取消查询" Icon="Cross" OnClientClick="ShowSearch()"
34. runat="server" ID="Button3">
35. </f:Button>
36. <f:Button EnablePostBack="false" Text="重置" ToolTip="重置查询条件" Icon="Reload" OnClientClick="ClearSearch()"
37. runat="server" ID="Button2">
38. </f:Button>
39. </Items>
40. </f:Toolbar>
41. </Toolbars>
42. </f:Form>
43. </Items>
44. </f:Region>

  获取grid得到焦点,是选择行的样式,后台查询行号通过FineUI.PageContext.RegisterStartupScript()输出到前台获取焦点,后台没找到获取焦点的方法才写的,没必要重载grid数据时候用到。

Region 隐藏头部 head:F('<%= leftRegion.ClientID%>').collapseMode = 'mini';

4.直接通过行号修改指定列内容

 .function EditRowbyindex(index,value) {
. var grid = F('Grid1');
. grid.getView().focusRow(index);
. var row = grid.getView().getNode(index);
. $(row).find('.x-grid-cell-ColumnsID div.x-grid-cell-inner').text(value);

列 ClientIDMode="Static" 还是重载grid很慢(硬伤),触发前台更改,反正也保存完了。这里要注意引用js/jquery-1.10.2.min.js文件,find就是find的class 可以连续点好几个一层一层的找,按F12一下就找到了,.text就是里面显示的信息

grid绑定就是把数据序列化后输出到前台通过前台EXTJS渲染和显示,大数据量时明显谷歌比IE快,因为谷歌处理JS就是快,官方建议100条就使用数据库分页,我又没写存储过程所以也一直使用仿数据库分页,就是把数据放缓存里,这也是跟官网例子学的。模拟的数据库分页比一次性加载快了很多,但也遇到很多问题,有时间再整理出来。

5.获取iframe

项目里iframe必不可少,因为我的全是页面级使用FineUI,以前项目里树控件是Ztree的,本来就做成单独页面可以用iframe调用,所以想直接执行ztree页面里js就行了。

01.function GetiframeWindow(ifrmname) {
02. var ifrm1 = Ext.getCmp(ifrmname); //得到对象
03. var iframe = Ext.DomQuery.selectNode('iframe', ifrm1.body.dom); //得到iframe对象
04. var c = iframe.contentWindow; //转为Window对象
05. return c;
06. }

  调用js直接c.refreshTree就可以了。还可以直接写__doPostBack触发子页面的后台事件,爽急了。

修改地址是这个

 .function openifr(url) {
. var ifrm1 = Ext.getCmp('Region2'); //得到对象
. var iframe = Ext.DomQuery.selectNode('iframe', ifrm1.body.dom); //得到iframe对象
. iframe.src = url;
. }

因为FineUI是开源的,所以弄出好玩的东西我都会记录下来,可能我找到的方法不是最好的,所以请各路大神多指点。

ASP.NET-FineUI开发实践-2的更多相关文章

  1. FineUI开源版(ASP.Net)开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  2. FineUI开发实践-目录

    点我订阅 目前所有博客的截图,方便离线观看,点图片 FineUI初学手册 下载,实例项目搭建 FineUI初学手册-部分JS整理 部分JS整理 ASP.NET-FineUI开发实践-1 实际开发环境是 ...

  3. FineUI开发实践

    ASP.NET-FineUI开发实践-7 摘要: 下拉显示grid列表.其实很简单,但是试了很多方法,水平有限,主要是都不好使,还是简单的好使了,分享下.先是看了看网上的,是直接写个了extjs控件类 ...

  4. ASP.NET-FineUI开发实践-9(四)

    现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的. 1. ...

  5. ASP.NET MVC5 网站开发实践(二) Member区域–管理列表、回复及删除

    本来想接着上次把这篇写完的,没想到后来工作的一些事落下了,放假了赶紧补上. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NET MVC5 网站开发实践(一) - 项目框架 ASP ...

  6. ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询

    上次把咨询的架构搭好了,现在分两次来完成咨询:1.用户部分,2管理部分.这次实现用户部分,包含两个功能,查看我的咨询和进行咨询. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NE ...

  7. ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构

    咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...

  8. ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章

    上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据.   目录: ASP.N ...

  9. ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表

    显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据   目录 ASP.N ...

  10. ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章

    上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...

随机推荐

  1. 初涉JavaScript模式 (9) : 函数 【常用方式】

    回调模式 上一篇,对JavaScript函数进行了大体的介绍,这一篇对一些在工作中经常遇到的情况进行扩展. 在工作中,我们经常遇到很多需求,比如现在有一个需求: 一栋10层的大楼,当我们在坐电梯时,电 ...

  2. 《asp.net mvc3 高级编程》第四章 模型

    一,建立简单的Model 在Models文件夹上右击鼠标,选择“添加”,“类”,如下图所示: 建立三类相关联的类代码如下: public class Album { public virtual in ...

  3. 网易DBA私享会分享会笔记2

    mysql索引与查询优化什么是索引?索引其实是一个目录.通过各种数据结构实现,是(值=>行位置)的映射 索引的作用:1.提高访问速度2.实现主键.唯一键逻辑 索引使用场景数据量特别大的时候,进行 ...

  4. 【行为型】Strategy模式

    策略模式意图将解决问题的算法分别封装成一个个对象的形式,并使这些算法对象相互间可被替换.模式比较简单,对于策略对象结构的设计,可抽象一个抽象基类,并定义好相关算法(纯)虚接口,并由各种具体的实现算法子 ...

  5. Python自动化运维之21、CSS

    一.css简介 CSS 是 Cascading Style Sheets的缩写,称为层叠样式表,用来设计网页的样式布局,以及大小来适应不同的屏幕等,使网页的样式和网页数据分离, 二.导入css 导入c ...

  6. Ant快速入门(三)-----定义生成文件

    适应Ant的关键就是编写生成文件,生成文件定义了该项目的各个生成任务(以target来表示,每个target表示一个生成任务),并定义生成任务之间的依赖关系. Ant生成文件的默认名为build.xm ...

  7. 重构前的程序:通过rsync命令抓取日志文件

    基本概况: 我有一台服务器每天每个小时都会生成一个日志文件,这些日志文件会被保留2天,超过2天会被一个程序压缩放到备份目录,日志文件的文件名是有命名要求的,例如:project_log.2013010 ...

  8. 转:PHP教程之PHP调用session_start后页面始终加载的问题研究

    今天群里有朋友说他的遇到一个有趣的问题: 一个PHP页面的执行时间比较长(15秒左右),而只要这个页面没有执行完毕,其他的页面访问都是长时间加载状态,只有那个页面执行完毕了,剩下的页面才能打开. 这是 ...

  9. UVA253 Cube painting(数学)

    题目链接. 分析: 用的<训练指南>上的方法.详见P17. 从6个面中选一个做顶面,再从剩下的4个面中选1个做正面,则此正方体唯一确定. 需要枚举共6*4=24种. #include &l ...

  10. [LeetCode] 30. Substring with Concatenation of All Words 解题思路 - Java

    You are given a string, s, and a list of words, words, that are all of the same length. Find all sta ...