我想写个方法,实现这个全选删除功能
没个表都会生成一个列表,都会有全选删除
public void Getdelcheck(string checkname)
{
string delcheckId = Request.Form[checkname];
string[] delcheck = delcheckId.Split(','); foreach (var item in delcheck)
{
//这里如何实现全选删除,应该是传一个类?
//每个类对应一个删除方法,但是这里应该怎么实现
}
}
没个表都会生成一个列表,都会有全选删除
public void Getdelcheck(string checkname)
{
string delcheckId = Request.Form[checkname];
string[] delcheck = delcheckId.Split(','); foreach (var item in delcheck)
{
//这里如何实现全选删除,应该是传一个类?
//每个类对应一个删除方法,但是这里应该怎么实现
}
}
string[] delcheck = delcheckId.Split(',');delcheck 这个就是返回删除ID的列表
这个也是在前台用的jq实现全选,全选的ID已经放在了 delcheck 数组里
但是不知道 如何写个通用的方法
我用的是linq to entity 大侠给个代码提示下
晕,引用错了,抱歉 我用的是linq to entity 大侠给个代码提示下
db.DeleteObject(user);
db.SaveChanges();
<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;
}
}
/// 删除
/// </summary>
/// <param name="id"></param>
public static void DelKL_Prem_RoleInfo(int id)
{
var query = Entities.KL_Prem_RoleInfo.FirstOrDefault(c => c.RoleId == id);
if (query != null)
{
Entities.DeleteObject(query);
Entities.SaveChanges();
}
} /// <summary>
/// 全选删除
/// </summary>
/// <param name="delcheck"></param>
/// <returns></returns>
public static bool Delcheck(string delcheck)
{
string[] delcheckArray = delcheck.Split(',');
if (delcheckArray==null)
{
return false;
}
foreach (var id in delcheckArray)
{
//主要是这个地方应该怎么写?
DelKL_Prem_RoleInfo(Convert.ToInt32(id));
} return true;
}
这样删除是可以的,但是要每一个 实体表类里面都要写一个Delcheck这样的方法,我想有没有一个通用的方法,来实现全选删除
循环拼接一个这样的delete:
delete dbo.xxx where id in (x,x,x)
当然最好是参数绑定
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; }
}
}
/// 删除
/// </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"); }
}