/// <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); } } }
/// <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); }
/// <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); } } }
/// <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; }
/// <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); } }
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(); }