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

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

新規登録して質問してみよう
ただいま回答率
85.48%
DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

Q&A

0回答

1859閲覧

DataGridViewのCellにButtonを表示したい

moconyan

総合スコア18

DataGrid

GUIの一種であり、データを表の形式でみることが可能です。

C#

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

0グッド

0クリップ

投稿2020/01/28 06:05

SQLからデータを取り出した後、DataGridViewにデータを反映し、指定した列のセルのみボタンを表示したいです。

データ引出し、DataGridViewに表示まではできるのですが、DataGridViewButtonColumnを使って指定した列のみボタンを表示したいのですがエラーが出ます

※エラー内容
System.InvalidCastException: 'CellTemplate に指定された値は型 System.Windows.Forms.DataGridViewTextBoxCell であるか、またはその型から派生していなければなりません。'

DataGridViewTextBoxCellにすればエラーは出なくなり内容も表示されますが、ボタンにして押すと内容([11]備考)が表示されるような形にしたいと思っております。

c#

1private DataGridView SetList(DataGridView source_view) 2 { 3 /* クエリにて出力されるデータは、以下の順です 4 5 0 n.regist_dt // 作成日 6 1 n.update_dt // 更新日 7 2 n.title // 表題 8 3 division_name // 区分 9 4 snapshot_thumbnail // スナップショット 10 5 n.page_count // ページ数 11 6 sing_img // 更新者サイン 12 7 n.note_id // ID 13 8 n.user_manage_code // 管理番号 14 9 n.rfid_epc // コード 15 10 tag_name // タグ 16 11 remarks // 備考 17 12 edit_flag // 編集フラグ 18 19 */ 20 21 // イメージ表示用テンプレート 22 DataGridViewImageColumn image_column = new DataGridViewImageColumn(); 23 // イメージ表示モード 24 image_column.ImageLayout = DataGridViewImageCellLayout.Stretch; 25 // Padding 26 image_column.DefaultCellStyle.Padding = new Padding(2, 2, 2, 2); 27 28 // テキストボックスColumnの作成 29 DataGridViewTextBoxColumn text_column = new DataGridViewTextBoxColumn(); 30 31 // ボタンColumnの作成 32 DataGridViewButtonColumn button_column = new DataGridViewButtonColumn(); 33 button_column.UseColumnTextForButtonValue = true; 34 button_column.Text = "詳細閲覧"; 35 36 // DataGridViewに追加する 37 38 source_view.Columns[0].HeaderText = "作成日"; 39 source_view.Columns[0].Width = 225; 40 41 source_view.Columns[1].HeaderText = "更新日"; 42 source_view.Columns[1].Width = 225; 43 44 source_view.Columns[2].HeaderText = "区分"; 45 source_view.Columns[2].Width = 300; 46 47 source_view.Columns[3].HeaderText = "表題"; 48 source_view.Columns[3].Width = 300; 49 50 if (pic_thumbnail) 51 { 52 source_view.Columns[4].CellTemplate = image_column.CellTemplate; 53 54 source_view.Columns[4].HeaderText = ""; 55 source_view.Columns[4].Width = 80; 56 57 } 58 else if (!pic_thumbnail) 59 { 60 source_view.Columns[4].Visible = false; 61 } 62 63 source_view.Columns[5].HeaderText = "頁"; 64 source_view.Columns[5].Width = 80; 65 dataGridView_note_list.Columns[5].DefaultCellStyle.Alignment = 66 DataGridViewContentAlignment.MiddleRight; 67 68 source_view.Columns[6].CellTemplate = image_column.CellTemplate; 69 source_view.Columns[6].HeaderText = "更新者"; 70 source_view.Columns[6].Width = 200; 71 72 source_view.Columns[7].Visible = false; 73 source_view.Columns[8].Visible = false; 74 source_view.Columns[9].Visible = false; 75 76 source_view.Columns[10].DefaultCellStyle.WrapMode =DataGridViewTriState.True; 77 source_view.Columns[10].HeaderText = "タグ"; 78 source_view.Columns[10].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; 79 80 // 備考 81 source_view.Columns[11].CellTemplate = button_column.CellTemplate; 82 source_view.Columns[11].HeaderText = "備考"; 83 source_view.Columns[11].Width = 100; 84 85 // edit_flagは非表示 86 source_view.Columns[12].Visible = false; 87 88 return source_view; 89 }

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

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

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

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

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

mahry

2020/01/30 06:58

使用しているvisual studio のバージョンの記載もあると回答が来やすいのではないでしょうか
YAmaGNZ

2020/01/30 07:15

デザイナで最初からボタンにしておくのはダメなのですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問