ASP.NET 同时删除多条记录
来源:互联网 发布:江阴广电网络 编辑:程序博客网 时间:2024/05/18 00:02
下图是未办代理的查询界面,用户可以选择多条记录,进行删除。
实现:
绑定数据的控件是GridView。显示的未办代理信息的各个项是与数据库中未办代理表的字段绑定的。
1.档案编号唯一
在档案编号唯一的情况下,同时删除多条记录。实现思路:获取选中的多条记录的档案编号,放到集合中。
绑定表(未办代理表)里边存在主键列——number。通过主键进行删除。所以,通过档案编号集合获得主键编号集合,用主键编号集合作为参数传递到数据层实现删除。
后台代码:
protected void btnDelete_Click(object sender, EventArgs e) { List<String> idlist = GetSelIDlist(); //定义未办代理档案编号编号集合 UniversityStudentFacade universityFacade = new UniversityStudentFacade(); //实例未办代理外观 universityFacade .DecoveryList(idlist); //调用外观类方法,删除勾选记录 BindData(); //绑定数据 }
private List<string> GetSelIDlist() { List<String> list = new List<String>(); //实例化字符串集合 string idlist = ""; //档案编号ID string prilist = ""; //获取主键 bool BxsChkd = false; Facade.universityFacade universityFacade = new Facade.UniversityStudentFacade(); for (int i = 0; i < gridView.Rows.Count; i++) //遍历gridView { CheckBox ChkBxItem = (CheckBox)gridView.Rows[i].FindControl("DeleteThis"); //获取复选框控件 if (ChkBxItem != null && ChkBxItem.Checked) //判断是否不为空并且处于勾选状态 { BxsChkd = true; //#warning 代码生成警告:请检查确认Cells的列索引是否正确 if (gridView.DataKeys[i].Value != null) //判断勾选记录的DataKeys值是否不为空 { idlist = gridView.DataKeys[i].Value.ToString(); //获得PRI prilist += universityFacade .GetNumberlist(idlist).ToString() + "','"; //调用外观类方法,得到对应外键值 } } } if (BxsChkd) //判断数据行的最后一行是否勾选复选框 { prilist = prilist.Substring(0, prilist.LastIndexOf("',")); } list.Add(prilist); //将外键字符串附加到外键集合中 return list; }
D层实现:
/// <summary> /// 根据档案编号集合获得number集合 /// </summary> /// <param name="IDList">档案编号集合字符串</param> /// <returns>number集合字符串</returns> public string GetNumberlist(string IDList) { StringBuilder strSql = new StringBuilder(); strSql.Append("select number from T_UniversityStudent "); strSql.Append(" where state='T' and ID in ('" + IDList + "')"); SqlParameter[] parameters = {}; DataSet ds = DbHelperSQL.Query(strSql.ToString(), parameters); string numberList = ""; if (ds.Tables[0].Rows.Count == 0) //判断是否有查询到数据 { numberList = ""; } else if (ds.Tables[0].Rows.Count==1) { numberList = ds.Tables[0].Rows[0][0].ToString(); } else{ for (int i = 0; i < (ds.Tables[0].Rows.Count - 1); i++) //循环数据集DataTable每一行 { numberList += ds.Tables[0].Rows[i][0] + "'" + ","; //获取主键number集合 } numberList += "'" + ds.Tables[0].Rows[ds.Tables[0].Rows.Count - 1][0].ToString(); } return numberList; }
/// <summary> /// 批量删除数据 /// </summary> /// <param name="list">主键集合</param> /// <param name="conn">数据库连接</param> /// <param name="trans">事务</param> /// <returns>返回布尔值</returns> public bool RecoveryList(List<string> list, SqlConnection conn, SqlTransaction trans) { string[] prilist = list.ToArray(); StringBuilder strSql = new StringBuilder(); strSql.Append("update T_UniversityStudent set state ='F' "); strSql.Append(" where number in ('" + prilist[0] + "')"); SqlParameter[] parameters = {}; int rows = DbHelperSQL.ExecuteSqlRow(strSql.ToString(), conn, trans, parameters); if (rows > 0) { return true; } else { return false; } }
2.档案编号不唯一
在档案编号不唯一的情况下,同时删除多条记录。实际在实现时,档案编号不唯一。绑定表(未办代理表)
里边存在主键列——number,所以需要获取选中的多条记录的number,放到集合中,将集合作为参数传递到数据层实现删除。number是通过‘详情’项获得的。‘详情’是一个超链接,实现查看具体个人的详细未办代理信息。超链接中获取了number。所以,获取删除列的唯一标识number是从超链接中截取出来的。
前台代码:
<script type="text/javascript"> function getnumber() { if (Delcheck()) { //是否确认删除确认删除 var gv = document.getElementById("gridView"); var mycheck = gv.getElementsByTagName("input"); //获取GridView的Inputhtml var universityList = new Array(); //未办代理数组 var hg; var id; for (var i = 0; i < mycheck.length; i++) { if (mycheck[i].type == 'checkbox')//hidden { if (mycheck[i].checked == true) { // 复选框被选中 var numid = new Object(); hg = gv.rows(i + 1).cells(13).innerHTML; //获取详情列超链接 //alert(hg); hg = hg.substring(hg.lastIndexOf("number=") + 7, hg.lastIndexOf("\" target=")); //截取number //alert(hg); id = gv.rows(i + 1).cells(1).innerHTML; //获取档案编号 numid.number = hg; numid.id = id; universityList.push(numid); //universityList中有将要删除记录的档案编号、mumber //alert(hg); } } } $.ajaxSetup({ async: false }); var nid = JSON.stringify(universityList); $.post("UniversityDelete.ashx", { action: "post", numid: "" + nid + "" }, function (data) { //将universityList传递到删除的一般处理程序中,实现删除 if (data == "false") { window.setTimeout(function () { alert('删除失败!', 'fail'); }, 200); } else { alert("删除成功", "提示"); window.location.reload(); } }); } else { return false; } } </script><asp:LinkButton ID="lbtnDelete" class="btn-lit" runat="server" Height="25px" OnClientClick="return getnumber()" Width="52px" ><span>删 除</span></asp:LinkButton>
public void ProcessRequest(HttpContext context) { bool flag = false; string json = "{\"flag\":\"true\"}"; UniversityStudentFacade universityFacade = new UniversityStudentFacade(); context.Response.ContentType = "application/json"; string numid = context.Request["numid"].ToString(); JArray numidget = (JArray)JsonConvert.DeserializeObject(numid); for (int i = 0; i < numidget.Count; i++) { JObject numberget = (JObject)numidget[i]; string num = numberget["number"].ToString(); if (num.Equals("")) { UniversityStudentEntity enUniversity = new UniversityStudentEntity(); string id = numberget["id"].ToString(); enUniversity.ID = id; flag = universityFacade.Delete(universityFacade.GetModel(id).number); universityFacade.UpdateUniversityInfo(enUniversity); } else { int number = Convert.ToInt32(num); flag = universityFacade.Delete(number); } } //context.Response.Write(json); //Page.ClientScript.RegisterStartupScript(typeof(Page), "", "<script>alert('恭喜,文件上传成功!');history.go(-1);</script>"); if (flag) { context.Response.Write("true"); } else { context.Response.Write("false"); } }
/// <summary>/// 删除一条数据/// </summary>public bool Delete(int number){StringBuilder strSql=new StringBuilder(); strSql.Append("update T_UniversityStudent set state='F' ");strSql.Append(" where number=@number");SqlParameter[] parameters = {new SqlParameter("@number", SqlDbType.Int,4)};parameters[0].Value = number;int rows=DbHelperSQL.ExecuteSql(strSql.ToString(),parameters);if (rows > 0){return true;}else{return false;}}
下图是删除前两条记录的查询结果:
0 0
- ASP.NET 同时删除多条记录
- asp.net中同时提交多条记录与文件
- ASP同时添加多条记录
- asp 怎么实现可以同时添加多条记录
- asp 如何同时提交多条记录进行保存?
- asp实现批量删除选中的多条记录
- asp实现批量删除选中的多条记录
- 通过存储过程进行字符串分拆,在同时删除多条记录的时候有用。
- 在asp.net中实现删除DataGrid的某条记录时的提示信息
- 在asp.net中实现删除DataGrid的某条记录时的提示信息.txt
- asp 怎么实现可以同时添加多条记录到ORCAL库里啊
- oracle同时插入多条记录
- insert触发器 同时插入多条记录
- MySQL同时添加多条记录
- 一个表单同时提交多条记录
- 如何删除多条记录
- asp.net 删除表格选定记录
- ASP.NET同时上传多个文件
- 设计模式之工厂方法
- python--进阶四--多线程
- 进制的总结
- cmd下运行Java程序遇到java.lang.NoClassDefFoundError
- STM32F系列单片机内部FLASH编程
- ASP.NET 同时删除多条记录
- 解决 SQL Server 2005 中文乱码
- 第四周作业
- 携程预选赛A题-聪明的猴子-GCD+DP
- GUI 文档阅读
- HTML5基础,第2部分:组织页面的输入
- PHP学习总结
- 面试中的常用算法
- ACM-计算几何之改革春风吹满地——hdu2036