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 }
あなたの回答
tips
プレビュー