全选删除 通用方法问题
我想写个方法,实现这个全选删除功能
没个表都会生成一个列表,都会有全选删除
- C# code
public void Getdelcheck(string checkname) { string delcheckId = Request.Form[checkname]; string[] delcheck = delcheckId.Split(','); foreach (var item in delcheck) { //这里如何实现全选删除,应该是传一个类? //每个类对应一个删除方法,但是这里应该怎么实现 } }[解决办法]
全选可以服务器端选择;也可以用JS客户端选择全部,然后发删除命令回去删除.
[解决办法]
不如返回要删除的ID列表
PS:如果是B/S 建议你直接在前台用JS实现全选功能
[解决办法]
这个方法必须有两个参数,表名和主健名
如果你要传类,那么这些类必须有统一的接口或基类。
[解决办法]
User user = db.Users.Where(u => u.UserId == userId).FirstOrDefault();
db.DeleteObject(user);
db.SaveChanges();
[解决办法]
前台 CheckBox
<td height="25" valign="middle">
<asp:CheckBox ID="chdels" runat="server" Style="border: 0" />
</td>
<td width="59" height="22" align="center">
<asp:CheckBox ID="chall" runat="server" onclick="SelectAll(this)" Style="border: 0" />
全选
</td>
JS部分
function SelectAll(box)
{
var table=document.getElementById("repeaterManager");//获得datalist的值
var checks=document.getElementsByTagName("input");
for(var i=0;i<checks.length;i++)
{
if(box.checked==true)
{
if(checks[i].type=="checkbox"){
checks[i].checked=true;
}
}
else{
if(checks[i].type=="checkbox")
{
checks[i].checked=false;
}
}
}
}
//批量删除
protected void btndel_Click(object sender, EventArgs e)
{
try
{
string sqltext = "(";
//搜索第n行第n列
for (int i = 0; i < dlShop_order.Items.Count; i++)
{
CheckBox cbx = (CheckBox)dlShop_order.Controls[i].FindControl("chdels");
if (cbx != null)
{
if (cbx.Checked == true)
{
sqltext = sqltext + Convert.ToInt32(dlShop_order.DataKeys[i]) + ",";
}
}
}
//去掉最后的,号,并加上括号
sqltext = sqltext.Substring(0, sqltext.Length - 1) + ")";
int managerid = InfoManager.Instance.DeleteInfoByWhere(" id in " + sqltext);//这是一个拼接删除sql
if (managerid > 0)
ShowShop_order(this.OrderWhere);
}
catch (Exception)
{
throw;
}
}
[解决办法]
id结果集传到逻辑层
循环拼接一个这样的delete:
delete dbo.xxx where id in (x,x,x)
当然最好是参数绑定
[解决办法]
[解决办法]
- JScript code
var checkboxid="";function checkboxCheck(id){checkboxid="tr"+id; if(document.getElementById(id).checked){ $("#"+checkboxid).css("background-color","#F7F7F7"); }else{ $("#"+checkboxid).css("background-color","White"); }}function AllCheck(){ var a = document.getElementsByName("ckSP"); for (var i=0; i<a.length; i++) { a[i].checked=true; $("#"+"tr"+a[i].id).css("background-color","#F7F7F7"); } document.getElementById("selectAll").onclick=NotAllCheck;}function NotAllCheck(){ var a = document.getElementsByName("ckSP"); for (var i=0; i<a.length; i++) { a[i].checked=false; $("#"+"tr"+a[i].id).css("background-color","White"); }document.getElementById("selectAll").onclick=AllCheck;}function deleteAdvice(id){ if(confirm("确认删除吗?")){ window.location="1.aspx?key="+id; }}function deleteAll(){ var AllGuid=""; var a = document.getElementsByName("ckSP"); for (var i=0; i<a.length; i++) { if(a[i].checked) { var chkID = a[i].id; AllGuid += chkID + "|"; } } if(AllGuid != "") { if(confirm("确认删除吗?")) { window.location="1.aspx?key="+AllGuid; } } }
[解决办法]
1个方法就可以了,怎么删取决你有没有多选而已
- C# code
/// <summary> /// 删除 /// </summary> private void Detele() { if (Request.QueryString["key"] != null) { string keyId = Request.QueryString["key"].Trim(); //如果是批量删 if (keyId.Contains("|")) { string[] arry = keyId.Split('|'); for (int i = 0; i < arry.Length - 1; i++) { int id = int.Parse(arry[i]); new adviceDAL().Delete(id); } } //单个删 else { new adviceDAL().Delete(int.Parse(keyId)); } Response.Redirect("1.aspx"); } }