ここから本文です

C#のDataGridViewについての質問です。 DataSet、DataTableを使用して 手動でデ...

vil********さん

2013/3/912:40:15

C#のDataGridViewについての質問です。
DataSet、DataTableを使用して
手動でデータバインドを行ったDataGridViewの選択された列をコピーして貼り付けを行いたいのですが、うまく行きません。

選択行のコピー&ペーストはimportRowメソッドを使って対応出来たのですが、列は出来ませんでした。

どなたか教えていただけないでしょうか。

visualstudio2010を使用しています。
C#は確か3.0だったと思います。

また、DataGridViewよりももっと扱い易い物があれば教えてもらいたいです。

以上、よろしくお願いします。

閲覧数:
1,038
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

hog********さん

2013/3/918:06:18

こんばんは。

地道にやってくしかないのかな。あまり良いサンプルじゃない気がします。ごめんなさい。


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

'dataSourceの作成
Dim dt As New DataTable
dt.Columns.Add("a")
dt.Columns.Add("b")
dt.Rows.Add(New Object() {"1", "2"})
dt.Rows.Add(New Object() {"3", "4"})
Me.DataGridView1.DataSource = dt

'列選択モードにする
For Each c As DataGridViewColumn In DataGridView1.Columns
c.SortMode = DataGridViewColumnSortMode.Programmatic
Next c
Me.DataGridView1.SelectionMode = DataGridViewSelectionMode.ColumnHeaderSelect

End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

If Me.DataGridView1.SelectedColumns.Count < 1 Then
Exit Sub
End If

'選択されてる列をコピーする
Dim dt As DataTable = DirectCast(Me.DataGridView1.DataSource, DataTable)
Dim dtc As DataTable = dt.Clone
dtc.Columns.Add(String.Format("{0}のコピー", Me.DataGridView1.SelectedColumns(0).Name))

For Each r As DataRow In dt.Rows
Dim rr As DataRow = dtc.Rows.Add()
For Each c As DataColumn In dt.Columns
rr(c.ColumnName) = r(c.ColumnName)
Next
rr(dtc.Columns(dtc.Columns.Count - 1).ColumnName) = r(Me.DataGridView1.SelectedColumns(0).Index)
Next

'dataSourceの更新
Me.DataGridView1.SelectionMode = DataGridViewSelectionMode.CellSelect

Me.DataGridView1.DataSource = Nothing
Me.DataGridView1.DataSource = dtc

For Each c As DataGridViewColumn In DataGridView1.Columns
c.SortMode = DataGridViewColumnSortMode.Programmatic
Next c
Me.DataGridView1.SelectionMode = DataGridViewSelectionMode.ColumnHeaderSelect
End Sub

質問した人からのコメント

2013/3/10 12:31:46

降参 遅くなってしまってすいません。
試してみたら出来ました!どうやらデータテーブルの作り方がまずかったようです。ありがとうございます!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる