예제 #1
0
        /// <summary>
        /// DBにタグを追加します
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        private bool AddTag(IList <int> idList, IList <string> selectedTagList)
        {
            //DBにタグを追加します
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();

                try {
                    //選択中のIDのデータに対して、選択されたタグを追加します
                    foreach (var id in idList)
                    {
                        TagDataDao.AddTags(connection, id, selectedTagList);
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
예제 #2
0
        /// <summary>
        /// グリッドの手入力後に発生するイベント
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void grid_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            var id       = _grid[0, e.RowIndex].Value.ToString();              //ID
            var newValue = _grid[e.ColumnIndex, e.RowIndex].Value?.ToString(); //入力値

            if (newValue == null)
            {
                newValue = "";
            }

            FileData oldFileData;

            using (var connection = _db.GetConnection()) {
                oldFileData = FileDataDao.GetData(connection, id);
                if (oldFileData == null)
                {
                    MsgBoxUtils.ShowErrorMsgBox("このデータは削除されています。");
                    return;
                }

                //タグを取得します
                oldFileData._tags = TagDataDao.GetTags(connection, StringUtils.ToInt(id));
            }

            //カラムオブジェクトに値の変更を通知します(カラム側ではファイル名の変更などを行う)
            var newFileData = ((IFileListColumnForFileInfo)_grid.Columns[e.ColumnIndex]).ValueChanged(oldFileData, newValue);

            if (newFileData == null)
            {
                newFileData = oldFileData;
            }

            //行の更新します
            SetRowData(e.RowIndex, newFileData);
        }
예제 #3
0
        /// <summary>
        /// DBのタグを更新します
        /// </summary>
        /// <param name=""></param>
        /// <param name=""></param>
        /// <returns></returns>
        private bool UpdateTag(IList <int> idList, IList <string> selectedTagList)
        {
            //DBのタグを更新します
            using (var connection = _db.GetConnection()) {
                //トランザクション開始
                var transaction = connection.BeginTransaction();
                try {
                    foreach (var id in idList)
                    {
                        //タグを全て削除します
                        TagDataDao.Delete(connection, id);

                        //タグを追加します
                        foreach (var tag in selectedTagList)
                        {
                            TagDataDao.Insert(connection, tag, id);
                        }
                    }

                    //コミット
                    transaction.Commit();
                    return(true);
                } catch (Exception ex) {
                    //ロールバック
                    transaction.Rollback();
                    MsgBoxUtils.ShowErrorMsgBox("更新に失敗しました。\n" + ex.Message);
                    return(false);
                }
            }
        }
예제 #4
0
        /// <summary>
        /// ファイル情報テーブルからデータを取得します
        /// </summary>
        /// <param name="id"></param>
        public void LoadData(string id)
        {
            using (var connection = _db.GetConnection()) {
                var fileData = FileDataDao.GetData(connection, id);
                if (fileData != null)
                {
                    fileData._tags = TagDataDao.GetTags(connection, fileData.id);

                    //ファイルデータを入力欄に設定します
                    SetFileData(fileData);
                }
            }

            //変更なしにします
            Modified = false;
        }
예제 #5
0
        /// <summary>
        /// タグ編集画面を表示します
        /// </summary>
        /// <returns></returns>
        private IList <string> ShowTagForm(int topID)
        {
            //1番最初に選択されているデータのタグリストを取得します(子画面のデフォルト値として使用)
            string tags = "";

            using (var connection = _db.GetConnection()) {
                tags = TagDataDao.GetTags(connection, topID);
            }

            //タグの編集画面を表示します
            using (var form = new TagForm(TagForm.Mode.Add, _db, tags)) {
                //画面を表示します
                form.ShowDialog();

                //選択されたタグリストを取得します
                return(form.SelectedTagList);
            }
        }
예제 #6
0
        public TagForm(Mode mode, FileDB db, string tags)
        {
            InitializeComponent();

            //引数を保持します
            _mode       = mode;
            _db         = db;
            txtTag.Text = tags;

            if (mode == Mode.Add)
            {
                lblMsg.Text = "追加するタグを入力してください。";
            }
            if (mode == Mode.Update)
            {
                lblMsg.Text = "設定するタグを全て入力してください。";
            }
            if (mode == Mode.Delete)
            {
                lblMsg.Text = "削除するタグを入力してください。";
            }
            if (mode == Mode.Select)
            {
                lblMsg.Text = "検索するタグを入力してください。";
            }

            //タグリストを全体に広げます
            listTag.Dock = DockStyle.Fill;

            //DBのタグリストを取得します
            using (var connection = _db.GetConnection()) {
                _dbTagList = TagDataDao.GetAllTagList(_db.GetConnection());
            }

            //タグリストを作成します
            SetTagList();
        }