質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

2回答

8960閲覧

dataGridViewにチェックボックスをつけ削除(選択した情報を取得し削除)

yamaguti

総合スコア185

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/02/14 10:55

お世話になります。

パスワードを管理する、プログラム実装しているのですが、
現在照会画面を作り込んでおり、DBに登録されている内容をSELECTする部分まで完成しました。

次は削除したい情報にチェックボックスでチェックをつける。
チェックボックスをつけるところまでは、完了しました。

次は、このチェックした情報を取得しカラムを削除したいのですが、
どのように情報を取得すればいいのでしょうか?
よろしくお願いします。

C#

1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Data; 5using System.Drawing; 6using System.Linq; 7using System.Text; 8using System.Threading.Tasks; 9using System.Windows.Forms; 10using System.Data.SQLite; 11 12namespace WindowsFormsApplication4 13{ 14 public partial class Itiran : Form 15 { 16 public Itiran() 17 { 18 InitializeComponent(); 19 DataGridViewCheckBoxColumn column = new DataGridViewCheckBoxColumn(); 20 dataGridView1.Columns.Add(column); 21 } 22 private void btnsintou_Enter(object sender, EventArgs e) 23 { 24 //新規登録ボタンを押下すると登録画面に遷移 25 Touroku Touroku = new Touroku(); 26 Touroku.Show(); 27 this.Visible = false; 28 } 29 private DataTable datatable = new DataTable(); 30 protected override void OnLoad(EventArgs e) 31 { 32 dataGridView1.DataSource = datatable; 33 base.OnLoad(e); 34 } 35 //テーブルの内容を表示 36 private void buttonkensaku_Click(object sender, EventArgs e) 37 { 38 39 //検索条件がない場合 40 if (txtSiteNm.Text == "") 41 { 42 //using (SQLiteConnection con = new SQLiteConnection("Data Source = C:\\Users/Desktop/WindowsFormsApplication4/myfriend.sqlite3")) 43 using (SQLiteConnection con = new SQLiteConnection("Data Source = C:\\Users/Desktop/WindowsFormsApplication4 /myfriend.sqlite3")) 44 45 using (SQLiteDataAdapter adapter = new SQLiteDataAdapter("select * from PASS_KANRI", con)) 46 { 47 //データグリッドビューのクリア 48 datatable.Clear(); 49 50 dataGridView1.DataSource = datatable; 51 adapter.Fill(datatable); 52 53 //No,SiteNm,LoginId,Password,BIKO カラム順 54 //テーブルの内容表示 55 //dataGridView1.Columns[0].HeaderText = ""; 56 //dataGridView1.Columns[1].HeaderText = "No"; 57 //dataGridView1.Columns[2].HeaderText = "サイト名"; 58 //dataGridView1.Columns[3].HeaderText = "ログインIDまたはEmail等"; 59 //dataGridView1.Columns[4].HeaderText = "パスワード"; 60 //dataGridView1.Columns[5].HeaderText = "登録日"; 61 //dataGridView1.Columns[6].HeaderText = "備考"; 62 63 dataGridView1.Columns[0].HeaderText = "No"; 64 dataGridView1.Columns[1].HeaderText = "サイト名"; 65 dataGridView1.Columns[2].HeaderText = "ログインIDまたはEmail等"; 66 dataGridView1.Columns[3].HeaderText = "パスワード"; 67 dataGridView1.Columns[4].HeaderText = "登録日"; 68 dataGridView1.Columns[5].HeaderText = "備考"; 69 //行の幅を自動で調整する 70 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 71 72 } 73 } 74 else 75 { 76 string dbConnectionString = "Data Source = C:\\Users/Desktop/WindowsFormsApplication4 /myfriend.sqlite3"; 77 using (SQLiteConnection cn = new SQLiteConnection(dbConnectionString)) 78 { 79 cn.Open(); 80 using (SQLiteTransaction trans = cn.BeginTransaction()) 81 { 82 SQLiteCommand cmd = cn.CreateCommand(); 83 //SELECT文 84 cmd.CommandText = "SELECT * from PASS_KANRI where SiteNm = @SiteNm"; 85 86 //パラメータセット 87 cmd.Parameters.Add("SiteNm", System.Data.DbType.String); 88 89 cmd.Parameters["SiteNm"].Value = txtSiteNm.Text; 90 91 //datatableのクリア 92 datatable.Clear(); 93 //datatableに検索結果をセット 94 datatable.Load(cmd.ExecuteReader()); 95 96 dataGridView1.DataSource = datatable; 97 98 //dataGridView1.Columns[0].HeaderText = "ID"; 99 //No,SiteNm,LoginId,Password,BIKO カラム順 100 ////テーブルの内容表示 101 //dataGridView1.Columns[0].HeaderText = ""; 102 //dataGridView1.Columns[1].HeaderText = "No"; 103 //dataGridView1.Columns[2].HeaderText = "サイト名"; 104 //dataGridView1.Columns[3].HeaderText = "ログインID"; 105 //dataGridView1.Columns[4].HeaderText = "パスワード"; 106 //dataGridView1.Columns[5].HeaderText = "登録日"; 107 //dataGridView1.Columns[6].HeaderText = "備考"; 108 dataGridView1.Columns[0].HeaderText = "No"; 109 dataGridView1.Columns[1].HeaderText = "サイト名"; 110 dataGridView1.Columns[2].HeaderText = "ログインIDまたはEmail等"; 111 dataGridView1.Columns[3].HeaderText = "パスワード"; 112 dataGridView1.Columns[4].HeaderText = "登録日"; 113 dataGridView1.Columns[5].HeaderText = "備考"; 114 trans.Commit(); 115 cn.Close(); 116 //行の幅を自動で調整する 117 dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; 118 119 } 120 } 121 } 122 } 123 /// <summary> 124 /// 125 /// </summary> 126 /// <param name="sender"></param> 127 /// <param name="e"></param> 128 private void dataGridView1_Validating(object sender, CancelEventArgs e) 129 { 130 131 } 132 133 private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 134 { 135 //DataGridViewの内容をコピー 136 Clipboard.SetDataObject(dataGridView1.GetClipboardContent()); 137 } 138 139 private void Itiran_Load(object sender, EventArgs e) 140 { 141 142 } 143 144 private void Itiran_KeyDown(object sender, KeyEventArgs e) 145 { 146 //Enterキーでコントロール遷移 147 if (e.KeyCode == Keys.Enter) 148 { 149 if (e.Shift) 150 { 151 ProcessTabKey(false); 152 } 153 else 154 { 155 ProcessTabKey(true); 156 } 157 } 158 } 159 } 160} 161

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2017/02/14 11:08

DataGridViewからのみ削除するのでしょうか?それともDBも一緒に削除するのでしょうか?
yamaguti

2017/02/14 13:54

DBにアップデートで論理削除しようと思います
guest

回答2

0

ベストアンサー

C#

1 foreach (DataGridViewRow r in dataGridView1.Rows) 2 { 3 //チェックボックスがチェックされているか判断 4 if ((bool)r.Cells[0].Value == true) 5 { 6 //更新 7 } 8 } 9

という感じで、1行づつ調べて更新処理を行うのがよいと思います。

投稿2017/02/14 14:14

YAmaGNZ

総合スコア10222

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

チェックした情報を取得しカラムを削除

カラムではなくロー(行)を削除ではないでしょうか?主キーによりローを削除するのが普通の考え方だと思うので、もしこのテーブルの主キーがNoならチェックがついた情報のNoを取り出してそれによって削除するという流れでよいのではないでしょうか。

投稿2017/02/14 11:27

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yamaguti

2017/02/14 13:55

失礼しました。 行を削除でした。 主キーはNoになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問