如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之自定义表单开发随笔四

2024-05-12 09:26:11

“厂长,上一次我们讲过了工作流的整体规划,今天我要动手做啦!我想先把工作流的自定义表单做出来。”

“好的,以前我做这方面的东西,我给你设计了一份表结构,你先拿去看看。”

wKiom1do4LuRmry-AADhqNBhEkY555.png-wh_50

“厂长,是不是没发完,怎么就一个表?”

“我就知道你会这么问,我现在给你解释一下重点字段的含义。”

数据表:将表单上的内容保存到哪个表。

关联表的主键:要保存表单数据那张表的主键。

是否需要建表:是否需要把表单中的数据存入到表中,这里的意思是,是将表单上面的栏位与数据表的字段一一对应还是直接将整个表单的内容打包存一块。这里呢就看用户的需要啦,如果需要作统计汇总之类的数据分析,就按字段保存好了,如果不是就可以不用为表单上面每一个栏位都对应到数据字段,这样操作起来也简单。

表单内容:注意啦!就是这里,其实我是想把表单上所有的内容以json形式全部保存到一个字段里。这样后台不用再单独去建一张表来保存这些东西。前台统一去解析就好了。

“明白了,这样做确实好,可以少用好多表。”

“好的,闲话少说,我给你看第一个界面,我们在做界面布局的时候要考虑用户操作便捷性,所以可以做成向导式的。”

“演示地址就是下面这个,你可以去看看”

http://www.learun.cn:8090 、 用户名:System,密码:0000


“厂长,这里点下一步就是跳到一个新的页面吗?”

“当然不是,其实是多个DIV之间的切换。来我给你看看代码。”

“别个这个页面看起来很复杂的样子,其实就是几个div+js实现的。先看html”

<div class="widget-body"><div id="wizard" class="wizard" data-target="#wizard-steps" ><ul class="steps"><li data-target="#step-1" class="active"><span class="step">1</span>基本配置<span class="chevron"></span></li><li data-target="#step-2"><span class="step">2</span>表单设计<span class="chevron"></span></li><li data-target="#step-4"><span class="step">3</span>创建完成<span class="chevron"></span></li></ul></div><div class="step-content wizard-step-content" id="wizard-steps"><div class="step-pane wizard-step-pane active" id="step-1"></div><div class="step-pane flowapp" id="step-2"><div id="frmdesign"></div></div><div class="step-pane" id="step-4"><div class="drag-tip"><i class="fa fa-check-circle"></i><p >设计完成,请点击保存</p></div></div></div><div class="form-button" id="wizard-actions"><a id="btn_last" disabled class="btn btn-default btn-prev">上一步</a><a id="btn_next" class="btn btn-default btn-next">下一步</a><a id="btn_caogao" class="btn btn-info">保存草稿</a><a id="btn_finish" disabled class="btn btn-success" οnclick="finishbtn();">保存</a></div>
</div>

再来看一下JS

        //加载导向$('#wizard').wizard().on('change', function (e, data) {var $finish = $("#btn_finish");var $next = $("#btn_next");if (data.direction == "next") {switch (data.step) {case 1:return bindingBase();break;case 2://绑定表单if (!bindingFrm()) {return false;}$finish.removeAttr('disabled');$next.attr('disabled', 'disabled');$('#btn_caogao').attr('disabled', 'disabled');break;default:break;}} else {$finish.attr('disabled', 'disabled');$next.removeAttr('disabled');$('#btn_caogao').removeAttr('disabled');}});


“哇,真的呢,这种效果好,果然是可以跳来跳去的。那你现在讲一下这个拖拽的表单是怎么实现的吧。”

“恩,你看看,这个东西的原理其实就是拼接html,左边放工具栏,工具栏上选择不同的工具其实就是不同类型的控件,右侧设置控件的属性。中间显示效果。”

 function setFrmInfo(data){var _height = $(window).height() - 87 < 410 ? 410 : $(window).height() - 87;postData.FrmContent = data.FrmContent;if (data.isSystemTable == "0") {frmapp = $('#frmdesign').frmDesign({Height: _height,frmContent: postData.FrmContent});}else {var _frmdatabase = [];for (var i in frmdatabase){if (frmdatabase[i].column != postData.FrmTableId){_frmdatabase.push(frmdatabase[i]);}}frmapp = $('#frmdesign').frmDesign({Height: _height,tablefiledJsonData: _frmdatabase,isSystemTable: postData.isSystemTable,frmContent: postData.FrmContent});}}function bindingFrm() {var frmcotentls = frmapp.getData();if (!frmcotentls) {return false;}postData.FrmContent = JSON.stringify(frmcotentls);return true;}/*=========表单选择(end)====================================================================*//*=========创建完成(begin)==================================================================*/function finishbtn() {postData["EnabledMark"] = 1;$.SaveForm({url: "../../FlowManage/FormDesign/SaveForm?keyValue=" + keyValue,param: postData,loading: "正在保存数据...",success: function () {$.currentIframe().$("#gridTable").trigger("reloadGrid");}})}



后台代码:

        /// <summary>/// 保存用户表单(新增、修改)/// </summary>/// <param name="keyValue">主键值</param>/// <param name="userEntity">用户实体</param>/// <returns></returns>[HttpPost][ValidateAntiForgeryToken][AjaxOnly]public ActionResult SaveForm(string keyValue, WFFrmMainEntity userEntity){wfFrmMainBLL.SaveForm(keyValue, userEntity);return Success("操作成功。");}


        /// <summary>/// 保存表单/// </summary>/// <param name="entity">表单模板实体类</param>/// <param name="keyValue">主键</param>/// <returns></returns>public int SaveForm(string keyValue,WFFrmMainEntity entity){try{if (string.IsNullOrEmpty(keyValue)){entity.Create();this.BaseRepository().Insert(entity);}else{entity.Modify(keyValue);this.BaseRepository().Update(entity);}return 1;}catch(Exception){throw;}}

就这么简单,一个功能就完了。

转载于:https://blog.51cto.com/2165201/1791376

如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之自定义表单开发随笔四相关推荐

  1. 如何提高码农产量,基于ASP.NET MVC的敏捷开发框架之移动端开发随笔二

    前言 在前一篇文章中我已经做过开篇,接下来的随笔会详细讲一下我们的开发框架是如何实现的,专业的事由专业的人来讲,以后就由我们的高级码农小李英文名查尔斯和他的师父厂长(因为姓陈,酷爱摄影,我们的文艺片都 ...

  2. 基于ASP.NET MVC+SQLite开发的一套(Web)图书管理系统【100010294】

    摘要 随着互联网的快速发展,各种线下手工业务都开始转向了互联网线上操作,在21世纪的信息革命时代,信息管理系统成为日常信息记录的主流工具. 本文介绍了以VS 2019(Microsoft Visual ...

  3. 看一下基于ASP.NET MVC的开源社区项目Orchard

    昨天介绍了基于ASP.NET MVC的框架Catharsis,今天给大家介绍的是基于ASP.NET MVC的一个开源社区项目Orchard,本篇主要介绍一下Orchard是什么,如何下载安装以及安装过 ...

  4. OXite 微软一款基于asp.net mvc架构的blog内容管理系统

    OXite 微软一款基于asp.net mvc架构的blog内容管理系统 对学习MVC有较好的帮助 URL http://oxite.codeplex.com/ 转载于:https://www.cnb ...

  5. 介绍一个基于ASP.NET MVC的框架Catharsis

    Catharsis是一个基于ASP.Net MVC的一个开源框架,之前在codeproject上看到的.在我的2011生活看板中也说到今年准备给OpenExpressApp增加B/S支持,所以最近花了 ...

  6. ASP.NET MVC Bootstrap极速开发框架

    前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET MVC  And Bootstrap?数据库不要手工创建?框架对未来业务支持的扩展性好?这么简单的功能还需要 ...

  7. 基于React的表单开发的分析(上)

    本文主要讲解后台系统与表单相关的页面开发,并分析如何才能更好地.高效地开发. 技术栈 React Antd 背景 Antd 以下我都将Ant Design 简称为 Antd Ant Design是个服 ...

  8. 动态网页大作业 - 简单易懂【附源码分享】- 基于ASP、Ajax技术

    这是突击一个星期的菜鸡作业,提供给大家进行分享学习,是基于ASP.VBScript的旅客主题动态网站,有登录注册.在线留言功能,连接了本地数据库,需要配置好IIS环境,然后把文件夹放到IIS文件夹中, ...

  9. GPS部标平台的架构设计(十)-基于Asp.NET MVC构建GPS部标平台

    在当前很多的GPS平台当中,有很多是基于asp.NET+siverlight开发的遗留项目,代码混乱而又难以维护,各种耦合和关联,要命的是界面也没见到比Javascript做的控件有多好看,随着需求的 ...

最新文章

  1. HDU2112(SPFA算法)
  2. 如何开发一个Node脚手架
  3. transactionscope 中的异步 处理 异常_协程中的取消和异常 | 异常处理详解
  4. 一个listMap里map其中的一个字段的值相同,如何判断这个字段相同,就把这个map的其他字段存入另一个map中...
  5. linux c setuid函数解析
  6. 浅谈在Java开发中的枚举的作用和用法
  7. Cmd使用方式--命令行运行程序
  8. HDU-5935 Car 逆推 贪心 精度
  9. LeetCode 1535. 找出数组游戏的赢家
  10. day18(javaEE三大组件之一servlet(简介(一)))
  11. 【kafka】kafka Replica无法从leader同步消息
  12. 科研福利!北京超算获AI Perf500总量份额第一,200元卡时免费领取
  13. 实景三维的基石-osgb
  14. SCI论文下载之chrome插件
  15. 配置淘宝Maven镜像仓库
  16. 平安京因服务器升级维护无法,《阴阳师》手游12月31日维护更新公告
  17. Kerberos协议简介
  18. css浏览器兼容性的问题
  19. 2022卡塔尔世界杯。CSDN世界杯勋章来啦
  20. 杰瑞·卡普兰:人工智能的本质是自动化 而非智能化

热门文章

  1. mysql数据库导出模型到powerdesigner,PDM图形窗口中显示数据列的中文注释
  2. 开发工具使用技巧和插件大总结
  3. oracle:sql查询
  4. 模块版网站与html网站,网站新闻模块代码html
  5. Redis操作Set的相关API
  6. 自定义JWT认证过滤器
  7. SpringBoot maxConnections、maxThreads、acceptCount解析
  8. 方法区中的无用类回收
  9. Semaphore源码分析
  10. Spring 提供哪些配置形式?