一、效果图展示

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

二、界面界面代码

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

Ext.define('zxx.view.CreateOrUpdate', {
extend: 'Ext.form.Panel',
xtype: 'zxx-createorupdate', viewModel: {
data: {
semesterCourse: Eui.createModel('edu.semesterCourse', 'SemesterCourseEditDto')
}
}, waitMsgTarget: true,
border: false,
layout: 'fit',
fieldDefaults: {
msgTarget: 'under',
labelAlign: 'left',
labelWidth: 100,
labelStyle: 'font-weight:bold',
flex: 1
},
defaultType: 'textfield',
initComponent: function () {
var me = this;
var vm = this.getViewModel();
this.items = [
{
flex: 1,
checkboxToggle: true,
defaultType: 'checkbox',
layout: 'anchor',
defaults: {
anchor: '100%',
hideEmptyLabel: false
},
xtype: 'checkboxgroup',
items: [
{
xtype: 'fieldcontainer',
fieldLabel: '上课时间',
checkboxToggle: true,
defaultType: 'checkbox',
xtype: 'checkboxgroup',
id: 'courseDate',
name: 'courseDate',
labelWidth: 110,
layout: 'hbox',
items: [
{
boxLabel: '周一',
inputValue: '周一',
flex: 1,
},
{
boxLabel: '周二',
inputValue: '周二',
flex: 1,
},
{
boxLabel: '周三',
inputValue: '周三',
flex: 1,
},
{
boxLabel: '周四',
inputValue: '周四',
flex: 1,
},
{
boxLabel: '周五',
inputValue: '周五',
flex: 1,
},
{
boxLabel: '周六',
inputValue: '周六',
flex: 1,
},
{
boxLabel: '周日',
inputValue: '周日',
flex: 1,
}
]
}
]
}
]; this.callParent(arguments);
}, buttons: [{
text: l('Cancel'),
handler: 'closeForm',
iconCls: 'fa fa-window-close'
},
{
text: l('Save'),
handler: 'saveForm',
iconCls: 'fa fa-save',
disabled: true,
formBind: true
}], //编辑回填数据
setViewData: function (data, isEdit) {
var vm = this.getViewModel(); //通过 courseDate 找到items
var itmes = Ext.getCmp("courseDate").items; var semesterCourse = Eui.createModel('edu.semesterCourse', 'SemesterCourseEditDto', data.semesterCourse);
vm.set('semesterCourse', semesterCourse); //判断回填的数据是否有值
if (semesterCourse.data.courseDate.length > 0) {
//将值使用 split 函数分割
var courseDates = semesterCourse.data.courseDate.split(',');
for (var i = 0; i < courseDates.length; i++) {
const element = courseDates[i];
itmes.each(function (item) {
if (item.inputValue == element) {//如果组件中的inputValue对应的值 与字符串数组匹配,则设置勾选该组件
item.setValue(true);//设置勾选
}
});
}
}
}, /**
* 获取提交到服务器的数据
* @param {boolean} isEdit 是否编辑
* @returns {object} 提交的数据
*/
getSubmitData: function (isEdit, uploadData) {
var vm = this.getViewModel(); //找到 courseDate 下面的 items
var itmes = Ext.getCmp("courseDate").items.items; //定义字符串
var courseDate = ""; //拼接字符串
for (var i = 0; i < itmes.length; i++) {
const element = itmes[i];
if (element.value) {
courseDate += element.inputValue + ","
}
} //将最后的一个逗号去掉
if (courseDate.length > 0) {
courseDate = courseDate.substring(0, courseDate.length - 1)
}
//赋值
vm.data.semesterCourse.data.courseDate = courseDate; //最后一步就是提交数据到服务器
var result = {
semesterCourse: vm.data.semesterCourse.data,
};
return result;
}
});

三、服务端的话

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

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

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. kafka入门之broker-副本与ISR设计

    kafka把分区的所有副本均匀地分配到所有broker上,并从这些副本中挑选一个作为leader副本对外提供服务,而其他副本被称为follower副本,只能被动地向leader副本请求数据,从而保持与 ...

  2. nacos单机,集群安装部署

    nacos单机启动 准备 下载nacos安装包 下载地址 准备centos环境 (本次测试使用docker) PS C:\Users\Administrator> docker run -tid ...

  3. 帆软用工具测试超链接打开弹窗(iframe嵌套),解决js传参带中文传递有乱码问题

    1.新建超链接 随意点击一个单元格右击,选择 超级链接 2.在弹出的窗口中选择JavaScript脚本 如图: 其中红框框出的是几个要点   ,左边的就不讲了,右上角的参数cc是设置了公式remote ...

  4. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  5. Kafak探究之路- 内部结构小结

    1.框架与工作流 2 内部结构 kafka的每个主题分区的数据在 first-0(主题名-分区号)文件夹下,保存 n组xxx.log文件与xxx.index文件.log文件存发送消息的元数据,每个大小 ...

  6. 在Python实现print标准输出sys.stdout、stderr重定向及捕获的简单办法

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 Python中的标准输出和错误输出由sys模块的stdout.stde ...

  7. Python+Qt学习随笔:PyQt中常用的事件处理函数

    在PyQt图形界面中,我们经常要捕获特定事件如鼠标按键按下.鼠标按下等事件以执行特定操作,可以通过重写组件对象的相关事件处理函数来实现相关处理,具体特定事件常用的包括如下: keyPressEvent ...

  8. PyQt(Python+Qt)学习随笔:Qt Designer中部件的enabled属性

    enabled属性非常简单,最开始老猿没准备介绍该属性的,因为大家都应该知道,但仔细看了看官网文章,觉得还是有些细节可能很少有人注意到,因此还是在此介绍一下. enabled属性用于表示部件是否可用, ...

  9. PyQt(Python+Qt)学习随笔:Designer中不能编辑信号和槽的问题

    新建了一个窗口部件,在窗口上添加了相关布局,再设置窗口窗口的布局为垂直布局,窗口设计好界面后如图所示: 可以看到窗口是QWidget类,窗口上从上到下有三个布局,窗口自身的布局为垂直布局,布局名为ve ...

  10. 写了一个类似与豆瓣的电影的flask小demo

    先展示页面 基本的功能是都已经实现了,更多那个地方是可以点的.只不过视频上面还用的宏,哎呀,感觉麻烦.有多麻烦呢,需要先定义一个宏,然后进行引用.我们才能是用,以我的观点,还不如直接是一个循环完事.. ...