您的位置:首页 > 其它

如何根据集合动态构建复选框选择控件

2015-07-27 21:26 281 查看
背景:根据列表或集合,构建复选框控件,从中选取若干选项。比如,构建城市选择控件,城市按照字母分组进行展示。再比如,构建学生选择控件,学生按照城市进行分组展示。常作为分部视图使用。

效果图:

public class CheckBoxController : Controller
{
//
// GET: /CheckBox/

public ActionResult Index()
{
List<STU> stuList = new List<STU>()
{
new STU{ID=1,Name="Lily",Age=18,City="NewYork"},
new STU{ID=2,Name="Lucy",Age=20,City="NewYork"},
new STU{ID=1,Name="LiLei",Age=18,City="BeiJing"}
};
ViewBag.CityList = stuList;
return View();
}

}
public class STU
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}


View Code
关键代码讲解:

ViewBag.CityList = stuList;通过ViewBag将列表数据传递到,前台页面中。

var tmp = ViewBag.CityList as List<STU>;获取后台传递过来的列表,并解析成List。

foreach...foreach 解析列表,按照城市进行分组,按照年龄的大小进行组内排序。详情见:C#中对泛型List进行分组输出元素

JQuery代码,当勾选每个学生选项时进行判断,如果同组的其他同学是否被勾选,如果有没有勾选的同学,则城市同样不被选中。

$obj.parent().parent().find('input').each(function () {
if ($(this).attr('Checked') != "checked") {
$obj.parent().parent().prev('tr').find('input').removeAttr('checked');
}
});


其中,prev方法用来查找前一个同胞元素(同级)。且如果checkbox被选中,该属性的值为checked,否则为undifined。

  5. $("#checkedAll").removeAttr("checked");移除对某checkbox的选中,主要用于各选择元素之间的联动。

问题:最麻烦的是,处理各个元素之间的联动,如全选,或者选择某一城市,或者是选择某一单个同学,都将可能对其他checkbox产生影响。注意上面的JS代码有不完善的地方,请自行处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: