我想找出一个好方法去删除ID的复选框,如下所示,插入,我使用的是SqlBulkCopy,但我认为没有类似的删除类。我现在只能想到如果选中复选框但却不确定它是否是最好的方法,对foreach行的最大计数大约为15,也可以包含1的事务回滚。删除1?感谢。
protected void DeleteMsg_Click(object sender, EventArgs e)
{
UserBLL userBll = new UserBLL();
foreach (GridViewRow row in uigvUserInbox.Rows)
{
CheckBox chkSelected = (CheckBox)row.FindControl("chkSelect");
if (chkSelected.Checked)
{
try
{
// DataKey currentDataKey = uigvUserInbox.DataKeys[row.DataItemIndex];
// userBll.DeleteMessage(currentDataKey.Value.ToString()); // SQL delete
}
catch (Exception ex)
{
// clsLogging logError = new clsLogging();
// logError.WriteLog(ex);
}
}
}
}
答案 0 :(得分:1)
将适当的方法添加到UserBLL
类,该类使用where yourMappedIDColumn in (here is the comma separated list of dataKeys)
class UserBLL
{
internal void DeleteMessages(List<DataKey> dataKeysToDelete)
{
//delete from tableName where Id in dataKeysToDelete
}
}
检索变量中的所有数据键并将其传递给上面的metod。
protected void DeleteMsg_Click(object sender, EventArgs e)
{
UserBLL userBll = new UserBLL();
List<DataKey> dataKeysToDelete = new List<DataKey>();
foreach (GridViewRow row in uigvUserInbox.Rows)
{
CheckBox chkSelected = (CheckBox)row.FindControl("chkSelect");
if (chkSelected.Checked)
{
dataKeysToDelete.Add(uigvUserInbox.DataKeys[row.DataItemIndex]);
}
}
try
{
userBll.DeleteMessages(dataKeysToDelete);
}
catch (Exception ex)
{
// clsLogging logError = new clsLogging();
// logError.WriteLog(ex);
}
}
答案 1 :(得分:0)
您可以使用In子句
从表中删除,其中id为(id1,id2,id3)
这只需要一个查询。