• Ext CheckBoxGroup使用


    一、效果图展示

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

    二、界面界面代码

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

    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); }
  • 相关阅读:
    C#中怎么设置comboBox1为只读,即不可在里面进行编辑?
    笔记
    Head First ObjectOriented Analysis & Design 读书 概记
    看到这篇东西 ,要收藏 呵呵
    HELLO OPENGL
    调试opengl程序出错
    HeadFirst C# 读书笔记 0426
    css布局容易范的一些错误
    百度新年贪吃蛇效果
    css3教程:boxsizing属性说明
  • 原文地址:https://www.cnblogs.com/gzbit-zxx/p/14202284.html
Copyright © 2020-2023  润新知