一、效果图展示

  我这里主要是为了实现选择周期时间。如周一、周二、周三等

二、界面界面代码

  下面就是我实现的代码,包含了界面、数据处理、回填数据等。可能架构的方式,您的代码和我的代码有差异,但是大体就是这样的。需要注意的地方,我已经使用颜色标出。

  1. Ext.define('zxx.view.CreateOrUpdate', {
  2. extend: 'Ext.form.Panel',
  3. xtype: 'zxx-createorupdate',
  4.  
  5. viewModel: {
  6. data: {
  7. semesterCourse: Eui.createModel('edu.semesterCourse', 'SemesterCourseEditDto')
  8. }
  9. },
  10.  
  11. waitMsgTarget: true,
  12. border: false,
  13. layout: 'fit',
  14. fieldDefaults: {
  15. msgTarget: 'under',
  16. labelAlign: 'left',
  17. labelWidth: 100,
  18. labelStyle: 'font-weight:bold',
  19. flex: 1
  20. },
  21. defaultType: 'textfield',
  22. initComponent: function () {
  23. var me = this;
  24. var vm = this.getViewModel();
  25. this.items = [
  26. {
  27. flex: 1,
  28. checkboxToggle: true,
  29. defaultType: 'checkbox',
  30. layout: 'anchor',
  31. defaults: {
  32. anchor: '100%',
  33. hideEmptyLabel: false
  34. },
  35. xtype: 'checkboxgroup',
  36. items: [
  37. {
  38. xtype: 'fieldcontainer',
  39. fieldLabel: '上课时间',
  40. checkboxToggle: true,
  41. defaultType: 'checkbox',
  42. xtype: 'checkboxgroup',
  43. id: 'courseDate',
  44. name: 'courseDate',
  45. labelWidth: 110,
  46. layout: 'hbox',
  47. items: [
  48. {
  49. boxLabel: '周一',
  50. inputValue: '周一',
  51. flex: 1,
  52. },
  53. {
  54. boxLabel: '周二',
  55. inputValue: '周二',
  56. flex: 1,
  57. },
  58. {
  59. boxLabel: '周三',
  60. inputValue: '周三',
  61. flex: 1,
  62. },
  63. {
  64. boxLabel: '周四',
  65. inputValue: '周四',
  66. flex: 1,
  67. },
  68. {
  69. boxLabel: '周五',
  70. inputValue: '周五',
  71. flex: 1,
  72. },
  73. {
  74. boxLabel: '周六',
  75. inputValue: '周六',
  76. flex: 1,
  77. },
  78. {
  79. boxLabel: '周日',
  80. inputValue: '周日',
  81. flex: 1,
  82. }
  83. ]
  84. }
  85. ]
  86. }
  87. ];
  88.  
  89. this.callParent(arguments);
  90. },
  91.  
  92. buttons: [{
  93. text: l('Cancel'),
  94. handler: 'closeForm',
  95. iconCls: 'fa fa-window-close'
  96. },
  97. {
  98. text: l('Save'),
  99. handler: 'saveForm',
  100. iconCls: 'fa fa-save',
  101. disabled: true,
  102. formBind: true
  103. }],
  104.  
  105. //编辑回填数据
  106. setViewData: function (data, isEdit) {
  107. var vm = this.getViewModel();
  108.  
  109. //通过 courseDate 找到items
  110. var itmes = Ext.getCmp("courseDate").items;
  111.  
  112. var semesterCourse = Eui.createModel('edu.semesterCourse', 'SemesterCourseEditDto', data.semesterCourse);
  113. vm.set('semesterCourse', semesterCourse);
  114.  
  115. //判断回填的数据是否有值
  116. if (semesterCourse.data.courseDate.length > 0) {
  117. //将值使用 split 函数分割
  118. var courseDates = semesterCourse.data.courseDate.split(',');
  119. for (var i = 0; i < courseDates.length; i++) {
  120. const element = courseDates[i];
  121. itmes.each(function (item) {
  122. if (item.inputValue == element) {//如果组件中的inputValue对应的值 与字符串数组匹配,则设置勾选该组件
  123. item.setValue(true);//设置勾选
  124. }
  125. });
  126. }
  127. }
  128. },
  129.  
  130. /**
  131. * 获取提交到服务器的数据
  132. * @param {boolean} isEdit 是否编辑
  133. * @returns {object} 提交的数据
  134. */
  135. getSubmitData: function (isEdit, uploadData) {
  136. var vm = this.getViewModel();
  137.  
  138. //找到 courseDate 下面的 items
  139. var itmes = Ext.getCmp("courseDate").items.items;
  140.  
  141. //定义字符串
  142. var courseDate = "";
  143.  
  144. //拼接字符串
  145. for (var i = 0; i < itmes.length; i++) {
  146. const element = itmes[i];
  147. if (element.value) {
  148. courseDate += element.inputValue + ","
  149. }
  150. }
  151.  
  152. //将最后的一个逗号去掉
  153. if (courseDate.length > 0) {
  154. courseDate = courseDate.substring(0, courseDate.length - 1)
  155. }
  156. //赋值
  157. vm.data.semesterCourse.data.courseDate = courseDate;
  158.  
  159. //最后一步就是提交数据到服务器
  160. var result = {
  161. semesterCourse: vm.data.semesterCourse.data,
  162. };
  163. return result;
  164. }
  165. });

三、服务端的话

  服务端的话,我就不多介绍。展示一点代码就可以。

  1. public async Task UpdateSemesterCourse(CreateOrUpdateSemesterCourseInput input)
  2. {
           //处理时间
  3. input.SemesterCourse.ScoreTemplate = string.IsNullOrEmpty(input.SemesterCourse.ScoreTemplate) ? "" : input.SemesterCourse.ScoreTemplate.Replace(',', ',');
  4.  
  5. var semesterCourse = await _semesterCourseRepository.GetAsync(input.SemesterCourse.Id.Value);
  6. ObjectMapper.Map(input.SemesterCourse, semesterCourse);
  7. semesterCourse.Remain = semesterCourse.Limit - semesterCourse.Selected;
           //保存数据
  8. await _semesterCourseRepository.UpdateAsync(semesterCourse);
  9. }

Ext CheckBoxGroup使用的更多相关文章

  1. 基于Extjs的web表单设计器 第六节——界面框架设计

    基于Extjs的web表单设计器 基于Extjs的web表单设计器 第一节 基于Extjs的web表单设计器 第二节——表单控件设计 基于Extjs的web表单设计器 第三节——控件拖放 基于Extj ...

  2. CodeSmith系列(三)——使用CodeSmith生成ASP.NET页面

    仍然使用之前的XML文件,然后设置生成参数如下: 生成调整后的页面如下: 生成的代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

  3. Ext js中CheckBoxGroup的动态绑定

    <script type="text/jscript"> var WinXianCode; function SearchGetXianLuF(Type) { if(! ...

  4. Ext小总结

    titleCollapse:true,//高级搜索点击隐藏显示 添加按钮 >弹出页面 1.添加按钮 //核销  在控制层页面添加页面路径>添加操作按钮>window.allOrder ...

  5. 无废话ExtJs 入门教程十[单选组:RadioGroup、复选组:CheckBoxGroup]

    无废话ExtJs 入门教程十[单选组:RadioGroup.复选组:CheckBoxGroup] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个一个单选组,一个复 ...

  6. ExtJS笔记 Ext.Loader

    Ext.Loader is the heart of the new dynamic dependency loading capability in Ext JS 4+. It is most co ...

  7. EXt form属性

    配置项: success:执行成功后回调的函数,包括两个参数:form和action failure:执行失败后回调的函数,包括两个参数:form和action method:表单的提交方式,有效值包 ...

  8. Ext 中xtype一览

    基本组件: xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单的按钮 cycle Ext.CycleButton ...

  9. ext4.1动态生成多个checkboxgroup(或者radiogroup),并且有toolbar操作、

    转载自:http://blog.csdn.net/zhengyuechuan/article/details/9327291 前台controller代码: Ext.define('zyc.contr ...

随机推荐

  1. python sklearn库实现逻辑回归的实例代码

    Sklearn简介 Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression).降维(Dimensionality Red ...

  2. 啊这......蚂蚁金服被暂缓上市,员工的大house没了?

      没有想到,网友们前两天才对蚂蚁员工人均一套大 House羡慕嫉妒恨,这两天又因为蚂蚁金服被叫停惋惜.小编看了一下上一篇的时间,正好是11月3日晚上被叫停.太难了!   这中间出现了什么变故呢?原本 ...

  3. 【MySQL/C#/.NET】VS2010报错--“.Net Framework Data Provider。可能没有安装。”

    前言 公司行业是金融软件,之前用的都是Oracle数据库.Oracle数据库用一个词来形容:大而全.MySQL的话,可能是因为开源.便宜,现在越来越主流. 我们也支持MySQL数据库,不过平时不用.最 ...

  4. harbor私有仓库部署

    Harbor 简介     Harbor是构建企业级私有docker镜像的仓库的开源解决方案,它是Docker Registry的更高级封装,它除了提供友好的Web UI界面,角色和用户权限管理,用户 ...

  5. DBeaver连接达梦|虚谷|人大金仓等国产数据库

    前言 工作中有些项目可能会接触到「达梦.虚谷.人大金仓」等国产数据库,但通常这些数据库自带的连接工具使用并不方便,所以这篇文章记录一下 DBeaver 连接国产数据库的通用模版,下文以达梦为例(其他国 ...

  6. 题解 洛谷 P5279 【[ZJOI2019]麻将】

    这题非常的神啊...蒟蒻来写一篇题解. Solution 首先考虑如何判定一副牌是否是 "胡" 的. 不要想着统计个几个值 \(O(1)\) 算,可以考虑复杂度大一点的. 首先先把 ...

  7. 题解-[SDOI2017]数字表格

    题解-[SDOI2017]数字表格 前置知识: 莫比乌斯反演</> [SDOI2017]数字表格 \(T\) 组测试数据,\(f_i\) 表示 \(\texttt{Fibonacci}\) ...

  8. 笨方法学python笔记

    编程是什么 编程就是通过输出一种语言给计算机"听",命令其去执行相应的操作. 我们称我们给计算机下达的命令称为指令.一般说程序就是有多个指令构成的. 计算机需要使用非常多的电路来实 ...

  9. 题解-NOI2016 优秀的拆分

    NOI2016 优秀的拆分 \(T\) 组测试数据.求字符串 \(s\) 的所有子串拆成 \(AABB\) 形式的方案总和. 数据范围:\(1\le T\le 10\),\(1\le n\le 3\c ...

  10. python最大几个数和最小几个数(堆排序)

    最大几个数和最小几个数 import heapq a = [7, 5, 3, 4, 8, 6, 0] cc = heapq.nsmallest(2, a) #最小的两个数 dd = heapq.nla ...