简单介绍一下,涉及到的几个知识点:
1.checkbox,多选
2.前台到后台传值,我用的是字符串拼接,到了后台在拆分的方式
3.批量删除的底层实现
效果图
前台view
<table id="list_data" class="easyui-datagrid" style="width:1075px;height:300px" cellpascing="0" cellpadding="0" ></table>
$(function () { $('#dg').datagrid({ title: '查询结果', iconCls: 'icon-view', //图标 width: 100, height: 'auto', nowrap: false, striped: true, border: true, collapsible: true, //是否可折叠 fit: true, //自动大小 url: "/EvaluationTemplate/GetData", //传值 remoteSort: false, pagination: false, //分页控件 rownumbers: false, //行号 singleSelect: false, //允许选择多行 selectOnCheck: true,//true勾选会选择行,false勾选不选择行, 1.3以后有此选项。重点杂这里 checkOnSelect: true, //true选择行勾选,false选择行不勾选, 1.3以后有此选项 columns: [[ { field: 'ck', checkbox: true, width: '30' }, //复选框 { field: 'TemplateName', title: '模板名称', width: '100' }, //课程类型名称 ]], }); });
解说:根据本篇博客性质,所以,大家重点看
“
selectOnCheck:true,//true勾选会选择行,false勾选不选择行, 1.3以后有此选项。重点杂这里
checkOnSelect: true,//true选择行勾选,false选择行不勾选,1.3以后有此选项 ”这两行代码。听着挺绕,其实就是复选框和选中行的颜色一致。一旦选中,复选框和具体某一行都变。
Controller.cs
#region 删除模板 /// <summary> /// 删除模板,批量删除,返回值是布尔值 /// </summary> /// <returns>返回值是布尔值</returns> public bool DelTem() { //从前台获取字符串拼接,在这里先不转换成数组 String strTemId= Request.QueryString["id"].ToString(); bool bltem = template.DelTemplate(strTemId); return bltem; } #endregion
解说:controller在这里只是作为一个数据传输的纽带。
服务端
//拆分字符串,放入数组中 string[] strTemplateId = strTemplateIdAll.Split(','); #region 根据条件删除 void DelBy(Expression<Func<T, bool>> delWhere) /// <summary> /// 根据条件删除 /// </summary> /// <param name="delWhere">删除条件</param> public void DelBy(Expression<Func<T, bool>> delWhere) { //1查询要删除的数据 List<T> listDeleting = MyBaseDbContext.Set<T>().Where(delWhere).ToList(); //2将要删除的数据 用删除方法添加到 EF 容器中 listDeleting.ForEach(u => { MyBaseDbContext.Set<T>().Attach(u);//先附加到 EF容器 MyBaseDbContext.Set<T>().Remove(u);//标识为 删除 状态 }); } #endregion
解说:依旧是底层类库,底层使用EF,涉及到lambda表达式,批量删除实现原理都是一样的,具体实现自己来做吧。
时间: 2024-10-08 10:51:51