- 首先查询出来你需要的数据:var varLinq = …………………;
- 声明一个空的字符串:string Lists = “”;
- For循环上面查询出来的数据,把查询数据放入到一个变量里面,然后再把变量拼接到上面声明的空的字符串里面以为 ; 分割开来。
---- for (int i = 0; i < varLinq.Count; i++)
{
var linq1 = Convert.ToDateTime(varLinq[i]).ToString(“yyyy-MM-dd”).Trim();
lists += linq1 + ";";
}
- 把该字符串保存的session里面去,方便后面调用该条数据。Session[“list”] = lists;
因为把数组放入到session中去,数组的类型会转换为object类型,而我们需要的是字符串数组类型,这两个类型之间的转换比较麻烦,所以我在这里直接保存字符串,然后在读取session中的数据的时候再进行分割。 - 把上面的数据分割成字符串数组,因为 ; 为分割点进行分割。
----string[] listes = lists.Split(’;’); - 声明一个空的字符串列表,然后遍历循环声明分割好的字符串数组,并且去掉重复的字符串和空的字符串数据。
---- List strCount = new List();
foreach (string listArry in listes){
if (!strCount.Contains(listArry) && !string.IsNullOrEmpty(listArry))
{strCount.Add(listArry); }} - new 一个对象列表,List list = new List(); SelectVo是一个实体类,里面就一个id选中值(public int id { get; set; })和text显示值(public string text { get; set; })设置这两个值为允许读、写的状态。
- For循环上面处理好的字符串列表,然后把值放入对象列表中
— for (int i = 0; i < strCount.Count; i++){
var linq1 = strCount[i].ToString().Trim();
SelectVo select = new SelectVo();
select.id = i + 1; select.text = linq1;
list.Add(select);
} - 把下拉框最开始的”–请选择—”项拼接到对象列表中。
- 把处理好的对象列表返回回去,下拉框的处理就完成了。return Json(list, JsonRequestBehavior.AllowGet);然后就是根据下拉框的内容查询筛选数据。
- 再次new 一个对象列表List list = new List();这里的对象列表中不存在上面的数据。
- 判断Session[‘list’]是否为空,如果为空,说明上面数据处理异常,如果不为空进行下一步操作。
- 声明一个字符串来接受session中的值:string strList = Session[“list”].ToString();
- 分割上面的字符串并保存的字符串数组里面去: string[] listes = strList.Split(’;’);
- 重复上面的操作:
声明空的字符串列表(string strList = Session[“list”].ToString()?—
遍历循环字符串数组,把值放入字符串列表里面去,并且去掉重复的字符串和空的字符串数据—For循环字符串列表,把值添加到上面声明的空的对象列表中去,然后拼接请‘—请选择—’项;代码和上面的一致。
16.通过ID查询出来出对象列表中的文本值text,StudentDate是视图传过来的参数:
string Text = listSelect.Where(S => S.id == StudentDate).SingleOrDefault().text;
总体代码图片:
17.然后就是查询出下拉框对应的全部数据,并且将其样式转为年月日的形式:
var varLinq = myModels.一周内航班信息8.Select(D => D.航班日期).ToList();
for (int i = 0; i < varLinq.Count; i++)
{
var linq1 = Convert.ToDateTime(varLinq[i]);
var linq2 = linq1.ToString(“yyyy-MM-dd”);
listFangjie[i].StudentNumber = linq2.ToString();
}
18.判断从页面下拉框传过来的id是否大于0,大于0说明有数据根据上面获取到的text文本值进行查询: if (StudentDate > 0)
{
listFangjie = listFangjie.Where(D => D.StudentNumber.Contains(Text)).ToList();
}
并且把值返回到视图:return Json(layuiTableData, JsonRequestBehavior.AllowGet);
19.然后就是视图(JQuery)部分的处理,视图部分代码:
1.获取下拉框的值:var StudentDate = $("#StudentDate").val();
2.判断如果获取到的值为null、””或者undefined则使它的值为0;
3.表格数据重载,并把下拉框的值作为参数传到控制器,控制器处理完成之后就会刷新表格。
20.下拉框的代码之所以那么复杂主要是因为数据库的表的问题,因为数据库只有一张粗糙的主表,并没有进行详细的分类处理,所以为了实现下拉框的查询的这个功能,代码就复杂了一点。