复选框多参数同时传递与查询

(作者:邵亮华,撰写时间:2019年1月16日)

我要讲的是复选框,多个参数同时传递与查询,这是我做的练习酒店后台管理系统项目,主要重点在于使用tb.search()的方法传参,只能使用用字符串拼接传递参数,所以我的构思是将多个参数拼接在一起形成一个字符串,化多为一,最后传递到控制器再分割,达到多个参数同时传递的效果。

 

在控制器设一个字符串类型的参数接收参数,在实例化一个List<EndAccountsInfor> list的列表;然后在多条件查询(在此之前先分割从页面传递来的字符串,将ID分割出来),通过for循环语句循环查询页面传递来到值,在存放到实例化的一个List<EndAccountsInfor> li的列表,再将list.AddRange(li)即将li存放到list表格

注意:数组参数如果运用到查询时,不能用tb.search()的方法拼接参数传递参数,因为这个方法只能用字符串拼接传递参数,如果不是字符串就无法传递

 

控制器

public ActionResult SelectCheckAccountAll(BsgridPage bsgridPage, Int16 AccountBookID, string listID)

        {

            List<EndAccountsInfor> list = new List<EndAccountsInfor>();

            List<EndAccountsInfor> listCheckAccountAll = (

 

多表连接查询

 

             select new EndAccountsInfor

                {  

    多表连接查询的字段

 

 }).ToList();

 

条件查询

            if (AccountBookID > 0)

            {

     listCheckAccountAll = listCheckAccountAll.Where(m => m.AccountBookID == AccountBookID).ToList();

            }

          

            if (!string.IsNullOrEmpty(listID))

            {

//将页面传递来的字符串通过 * 分割获取的值,都放在string类型的strid数组变量,接收分割好的字符串

                string[] strid = listID.Split('*'); 

                for (int i = 0; i < strid.Count(); i++)

                {

                    Int16 AccountOptionID = Convert.ToInt16(strid[i]);

                    List<EndAccountsInfor> li = new List<EndAccountsInfor>();

                    li = listCheckAccountAll.Where(m => m.AccountOptionID == AccountOptionID).ToList();

                    list.AddRange(li);

//从数据库查询的数据赋给了实例化列表li,再将li的数据一个一个的赋给实例化列表list

                }

                listCheckAccountAll = list; //最后一次性赋给listSpecialAccount列表就达到一次性查询多个参数

              

            }

 

HTML

获取多个复选框的值

由于tbAccountRecordInfor.search("&listID=" + strID);参数拼接传递只能是字符串,所以只能将页面每个选中的ID都转化为一个特殊的字符拼接串循环传递。

先声明一个空的strID变量,再通过for循环语句将点击获取的值拼接一个 *check1[i].value + "*"提供给控制器分割出ID的条件

注意:substr:字符串的截取

strID = strID.substr(0, strID.length - 1);

strID字符串的截取从0开始,strID.length – 1是为了避免在控制器分割字符串时出现空白,所以截取时去除最后一位字符

如:  [0*1*2*3]*    截取最后一位字符 *

Js

var check1 = $("#tbAccountOptionInfor input[type=checkbox]:checked");

            var strID = "";

            for (var i = 0; i < check1.length; i++) {

                strID += check1[i].value + "*";

            }

            strID = strID.substr(0, strID.length - 1);

猜你喜欢

转载自blog.csdn.net/weixin_42193004/article/details/86499989