Esempio n. 1
0
        /// <summary>
        /// 管理データを削除します
        /// </summary>
        private void DeleteData(IList <int> idList)
        {
            //セルが選択されていない場合は、処理を抜けます
            if (_grid.SelectedCells.Count == 0)
            {
                return;
            }

            var result = MessageBox.Show("管理データを削除してもよろしいですか?\nファイルは削除されません。", "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

            if (result == DialogResult.Yes)
            {
                var deleteIDList = new List <int>(); //グリッドから行を削除するためのIDリスト

                //「はい」の場合、管理データを削除します
                using (var connection = _db.GetConnection()) {
                    //トランザクション開始
                    var transaction = connection.BeginTransaction();


                    try {
                        foreach (var id in idList)
                        {
                            //管理データを削除します
                            FileDB.DeleteData(connection, id);

                            //削除用IDリストにIDを追加します
                            deleteIDList.Add(id);
                        }

                        //コミット
                        transaction.Commit();
                    } catch (Exception ex) {
                        //ロールバック
                        transaction.Rollback();
                        MsgBoxUtils.ShowErrorMsgBox("削除に失敗しました。\n" + ex.Message);
                    }
                }

                //一覧を更新します
                foreach (var id in deleteIDList)
                {
                    //指定したIDの行を取得します
                    int row = GetRowIndex(id);

                    //行を削除します
                    _grid.Rows.RemoveAt(row);
                }
            }
        }