日期:2014-05-20  浏览次数:20382 次

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