用.Net开发3年,主要接触资产管理,生产流程,质量追溯,.Net在这方面还是很靠谱的。2月低接触FineUI,那时版本是3.0+,第一眼让我想起了ExtJs,其实就是用.Net封装了ExtJs让ASP.NET开发更有效率,实际用起来确实是这样。
ASP.NET的回发确实让人头疼,很多东西即使结合前台Js也用的很别扭,而ExtJs在.Net开发环境下又很复杂完全是另一种语言,即使后来有ExtJs For .Net也用不好,结果是没用起来。FineUI处理回发的机制刚好结合了ExtJs和 ASP.NET的优点,让开发变的灰常简单,反正我是这么认为。
好的软件产品要包括以下几点。功能,功能强大能满足实际的各种复杂需求这是最基本的;简易,分两方面一是程序开发要快速简单,减少开发周期,软件成本降低,好的框架必不可少,二是软件操作快捷用起来直观方便;美观,好的UI让人享受,不了解软件的人甚至也有要操作的欲望。我不敢过于抬高FineUI框架,我只能说基本能满足简易和美观两点,我用着足够了。
3月正式启用FineUI框架升级产品。开发中亦遇到了许多问题,大大改变了原来的代码逻辑,不用再处理讨厌的回发,前台JS省了一大片,而且代码全部开源,细心研究也可以学到很多东西,甚至改出适应自己的控件。FineUI集成了很多ASP.NET常用的控件,但毕竟是在ExtJs上搭的所以前台渲染上和ASP.NET控件无甚大关系。SO,记录分享一下开发过程中遇到和解决的问题。让更多的人脱离苦海。教程要自己去看,我不教,我不是大师,不要高看我,我是CodingFarmer别喷我。实际开发环境是FineUI 4.0.4
1.实例代码中GetClientIDS方法
没有什么必要,开始我也没看清,其实就是输出个控件的ClientID,ClientID会在HTML呈现时自动生成,前台的控件写上 ClientIDMode="Static" 就能在前台找到直接F(‘控件ID’)即可。
2.建议使用页面及配置及每个页加上<%@ Register Assembly="FineUI" Namespace="FineUI" TagPrefix="f" %>
沾行代码并不费力,我的项目比较大有的功能不能避免FineUI和ASP.NET页面混合用所以不写成站点及配置,可以兼容多个组件。在FineUI页面下混用ASP.NET控件也不提倡,除非有特殊功能。
3.编辑页面回发
编辑页面后自动刷新父页面列表,__doPostBack得到了解放。直接上代码
1 function ActiveWindowBack() { 2 var activeWindow = F.wnd.getActiveWindow(); 3 activeWindow.window.__doPostBack(‘‘, ‘SaveMs_‘ + F(‘_hidPageIndex‘).getValue() + ‘_‘ + F(‘_hidSelectIndex‘).getValue()); 4 }
getValue()是得到值,activeWindow.window就是上级页面的意思,后台保存完数据后即可提示和刷新
Alert.Show(resultMsg, "提示", "ActiveWindowBack();");
Alert.Show()输出的是个Div,在点击弹出提示的确认后执行前台ActiveWindowBack方法
父页面接收
01.if (GetRequestEventArgument().IndexOf("SaveMs") >= 0) 02. { 03. string SaveMs = GetRequestEventArgument(); 04. BindQueryUserInfo(); 05. try 06. { 07. Grid1.PageIndex = Convert.ToInt32(SaveMs.Split(‘_‘)[1]); 08. Grid1.SelectedRowIndex = Convert.ToInt32(SaveMs.Split(‘_‘)[2]); 09. } 10. catch { } 11. }
接受方法里接收了参数,执行grid绑定和选择页以及行。要在IsPostBack里执行。FineUI框架里只要你不刷新他就一直是那个状态再此方法里父页面其他信息不动只有grid重新绑定了,速度还可以,只要模板列不太多,基本看不出来。
下次将介绍页面排版技巧灵活运用FingUI.Grid及常用Js,后续还有各种Iframe页面交互。