0

以下に示すように、IDのチェックボックスを削除するための良い方法を見つけたいと思います。挿入には、SqlBulkCopyを使用していますが、削除するための同様のクラスはないと思います。チェックボックスがオンになっている場合、1つずつ削除することしか考えられませんが、それが最善の方法かどうかはわかりません。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);
                    }
                }
            }
        }
4

2 に答える 2

1

UserBLLSQL側で削除を実行するクラスに適切なメソッドを追加します。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句を使用できます

(id1、id2、id3)のidが存在するテーブルから削除します

これは1つのクエリのみを取ります。

于 2012-12-15T17:54:29.787 に答える