全选删除 通用方法问题
我想写个方法,实现这个全选删除功能
没个表都会生成一个列表,都会有全选删除
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)
当然最好是参数绑定
------解决方案--------------------