笔记: 关于art.dialog,实现复选-程序员宅基地

技术标签: ViewUI  测试  数据库  javascript  

1.思路,由于工作需求,需利用jquery ,art.dialog组件实现弹框复选,编辑绑定功能(mvc);故做笔记;

视图部分代码 ;foreach遍历数据源;

    <td colspan="7">                   
                             <img alt="点击选择" src="@Url.Content("~/Content/themes/base/images/find.gif")" οnclick="btnSch()" />
                            <input id="JobNameJS" name="JobNameJS" value="" style="border:0;width:80%" readonly unselectable="on" />
                            @foreach (var item in jobsch)
                            {
                                for (int i = 0; i < arry.Count(); i++)
                                {
                                    if (Convert.ToInt32(arry[i]) == item.Id)
                                    {
                                        <input id="JobScheduleName" name="JobScheduleName" value="@item.JobScheduleName" style="border:0;" readonly unselectable="on" type="hidden" />                                                              
                                    }                                   
                               }
                            }                          
                            <input id="JobScheduleId" name="JobScheduleId" value="@Model.JobScheduleId" type="hidden" />
                        </td>

脚本代码,页面加载完成后,获取name为JobScheduleName的值,并遍历添加到数组中,替换到id为JobNameJS的input中;这样做的原因是因为显示的值在数据库是按条存储的,并且工程进度表与项目表关系是将进度表id以字符串形式存储到项目表中的,所以需要遍历。

  function btnSch()
    {
       var abc = $("#JobScheduleId").val();       
       var ac = $("#JobNameJS").val();
       art.dialog.data('Id', abc);
       art.dialog.data('JobSchName', ac);
        url = "/Item/JobScheduleList";
        art.dialog.open(url, {
            id:"btndig",
            title: '选择工程进度',
            width: 800,
            height: 500,
            left: '50%',
            top: '50%',
            esc: true,
            lock: true,
            resize: false,
            show: true,
            drag: false,
            ok: function () {
                if (art.dialog.data('JobSchName') != undefined)
                {
                    $("#JobNameJS").val(art.dialog.data('JobSchName'));
                    $("#JobScheduleId").val(art.dialog.data('Id'));
                    var a = art.dialog.data('JobSchName');
                    var b = art.dialog.data('Id');
                }
                
            }
        })
    }
    $(function () {
        var JobName = [];
        var JobNameList = $("input[name='JobScheduleName']").each(function () {
            var a = $(this).val();
            JobName.push(a);
        })   
        $("#JobNameJS").val(JobName);
    })

3.子页面,试图代码

         @Html.CheckBox("expert", false, new { id = item.Id, value = item.JobScheduleName })

js脚本,加载事件是为了将数据库的值从新绑定checkbox从而实现添加或者取消chebox,并且可以根据实际情况选择选中的最大个数

    Ids = new Array();
    ExpertNames = new Array();
    var checkCount = 0;
    //绑定
    $(function () {
        var ids = art.dialog.data('Id');
        var names = art.dialog.data('JobSchName');
        if (ids != undefined && ids != 0) {
            var idArray = ids.split(',');
            if (idArray[0] == "" && idArray.length == 1) {
                checkCount = 0;
            } else {
                checkCount = idArray.length;
            }
            var namesArray = names.split(',');
            $.each(idArray, function (index, value) {
                $("input[type=checkbox][id='" + value + "']").prop("checked", true);
                Ids.push(value);
                ExpertNames.push(namesArray[index]);
            })
        }
    })
    //取消选中
    $("input:checkbox").click(function () {
        var checkId = $(this).attr("Id");
        //取消选中
        if ($(this).prop("checked") == false) {
            checkCount = checkCount - 1;
            for (var i = 0; i < Ids.length; i++) {
                if (Ids[i] == $(this).attr("id") && ExpertNames[i] == $(this).val()) {
                    Ids[i].slice();
                    ExpertNames[i].slice();
                }
            }

        }
            //选中
        else {
            checkCount = checkCount + 1;
            if (checkCount > 10) {
                alert("最多只能选择10个!");
                checkCount = checkCount - 1;
                $("#" + checkId).removeAttr("checked");
                var id = $(this).prop('id');
                var name = $(this).prop('value');
                Ids.push(id);
                ExpertNames.push(name);

            }
        }
        //设置最大选中个数
        if (checkCount <= 10) {
            var id = $(this).prop('id');
            var name = $(this).prop('value');
            if ($(this).prop('checked') == true) {
                Ids.push(id);
                ExpertNames.push(name);
            } else {
                Ids.splice($.inArray(id, Ids), 1);
                ExpertNames.splice($.inArray(name, ExpertNames), 1);
            }
            art.dialog.data('Id', Ids.join());
            art.dialog.data('JobSchName', ExpertNames.join());
        }

    });

 每天记一点,就是进步。

 

转载于:https://www.cnblogs.com/sixsixsix/p/8377759.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/WHW1122/article/details/101555043

智能推荐

java内存区域知识点图解_java内存知识点-程序员宅基地

文章浏览阅读315次。Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间。有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁。_java内存知识点

【SpringBoot刷题】SpringBoot练习题(六)--Spring Boot缓存管理_springboot题库-程序员宅基地

文章浏览阅读240次。springboot常用知识刷题 缓存管理_springboot题库

python快速编程入门课后程序题答案-《Python编程:从入门到实践》课后习题及答案...-程序员宅基地

文章浏览阅读554次。第11章 测试代码11-1 城市和国家 :编写一个函数,它接受两个形参:一个城市名和一个国家名。这个函数返回一个格式为City, Country 的字符串,如Santiago, Chile 。将这个函数存储在一个名为city_functions.py的模块中。创建一个名为test_cities.py的程序,对刚编写的函数进行测试(别忘了,你需要导入模块unittest以及要测试的函数)。编写一个..._python程序编写入门课后答案 苏东

已解决ModuleNotFoundError: No module named ‘pip‘-程序员宅基地

文章浏览阅读6.1w次。出现"ModuleNotFoundError: No module named ‘pip’"错误通常表示您的Python环境中缺少pip模块。

新手入门 | 算法书籍推荐_算法入门书籍-程序员宅基地

文章浏览阅读2k次,点赞3次,收藏17次。以下内容转载来着:https://blog.csdn.net/qq_41551359/article/details/81837296书籍语言一般是C或者C++语言,因此在学习下面这些书籍时,希望你能够已经掌握了C语言的基础知识,后面公众号也将陆续简单的补上C语言的学习和回顾,这样对于连C语言都不熟的萌新,也可以在这里多看多提问。 好了,让我们开始吧! 1、数据结构与算法分析:C语言描述(适合入门) 这本书相对于算法导论要简单一些,更..._算法入门书籍

轮播图和导航菜单_下拉菜单如何覆盖在轮播图上-程序员宅基地

文章浏览阅读5.1k次。 轮播图顺序: 1.写出结构和样式,写样式时,banner的背景图片不显示出来,原因是没有给背景的块级元素设置宽高。 2.先完成图片自动轮播过程,接着完成圆点点击效果,最后再实现上一张、下一张效果。 导航菜单栏顺序: 1.先用一个兄弟元素将透明的导航栏背景写好,接着写一级菜单(注:各个一级菜单之间为兄弟元素,而且外面要用一个盒子将一级菜单包裹住,..._下拉菜单如何覆盖在轮播图上

随便推点

基于NDK配置工程gtest,覆盖率_ndk gtest-程序员宅基地

文章浏览阅读519次。set(GOOGLETEST_ROOT $ENV{ANDROID_NDK}/sources/third_party/googletest)add_library(gtest STATIC ${GOOGLETEST_ROOT}/src/gtest_main.cc ${GOOGLETEST_ROOT}/src/gtest-all.cc)target_include_directories(gte..._ndk gtest

我的理解——关于“ERP过时论”的探讨(转)-程序员宅基地

文章浏览阅读144次。我的理解——关于“ERP过时论”的探讨http://www.226e.net/article/13/Article6231_1.htm当前,ERP已经成为企业信息化管理的代名词了,什么行业都可以来一个ERP;什么金融ERP、保险...

Nginx配置文件操作神器(依赖nginxparser)-程序员宅基地

文章浏览阅读3.7k次,点赞2次,收藏5次。近期项目nginx负载均衡,需要对nginx的配置文件nginx.conf中的Listener和Member进行增删改的操作。找到了一个神器完美的解决了对配置文件的操作,并且以后写其他文件时也可以使用。1,可以在github上找到nginx-java-parser工具,项目地址:https://github.com/odiszapc/nginx-java-parser, 解析nginx.con..._nginxparser

入门指南:用Python实现实时目标检测(内附代码)-程序员宅基地

文章浏览阅读8.2k次,点赞5次,收藏57次。全文共6821字,预计学习时长20分钟来源:Pexels从自动驾驶汽车检测路上的物体,到通过复杂的面部及身体语言识别发现可能的犯罪活动。多年来,研究人员一直在探索让机器通过视觉识别物体的..._基于python语言的激光加工目标检测和识别算法,对图像中的目标进行识别和定位

互质数,枚举_枚举互质数-程序员宅基地

文章浏览阅读346次。题目描述:输入格式第一行是一个正整数 n(n <= 600)。第二行是 nnn个整数,相邻两个整数之间用单个空格隔开,整数在 [1,1000] 范围内。输出格式一个整数,即互质数组合的个数。输出时每行末尾的多余空格,不影响答案正确性样例输入 复制73 5 7 9 11 13 15样例输出 复制17思路分析:第一步:枚举所有的两个数的组合第二步:通过设计函数求最大公因数第三步:判断条件是当最大公因数等于1时,ans++第四步:输出ans源代码:#include <_枚举互质数

WPF 无边框实现拖动效果_wpf 无边框拖动-程序员宅基地

文章浏览阅读152次。这是在做弹幕的时候遇到的一个需求 透明背景,拖动弹幕=.=private void Window_MouseLeftButtonDown(object sender, MouseButtonEventArgs e){ base.OnMouseLeftButtonDown(e); // Begin dragging the window this.DragMove();}示例代码NoneBorder..._wpf 无边框拖动