0

我想找出删除 id 复选框的好方法,如下所示,对于插入,我正在使用 SqlBulkCopy 但我认为没有类似的删除类。如果复选框被选中但我不确定这是否是最好的方法,我现在只能考虑删除 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);
                    }
                }
            }
        }
4

2 回答 2

1

将适当的方法添加到UserBLL在 SQL 端执行删除的类中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
    }
}

检索变量中的所有数据键并将其传递给上面的方法。

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);
    }
}
于 2012-12-15T17:58:16.733 回答
0

您可以使用 In 子句

从 id in (id1, id2, id3) 的表中删除

这只需要一个查询。

于 2012-12-15T17:54:29.787 回答