C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.75342 の関連記事表示

<< 0 >>
■75342  DataGridViewのComboBoxでデータ選択
□投稿者/ 優希(ゆき) -(2015/03/17(Tue) 17:58:45)

    分類:[.NET 全般] 

    環境 Win7
    言語 vb2005

    DataGridViewにMySQLのテーブルのデータをValueMemberとDisplayMemberに入れて、選択させています。

    そのデータをDBにインサートして、再表示する際にインサートしたテーブルのデータを使用して、ComboBoxを選択させる方法を教えて下さい。

    DataPropertyNameではエラーが発生し、ValueMemberでは選択されませんでした。

親記事 /過去ログ127より / 関連記事表示
削除チェック/

■75343  Re[1]: DataGridViewのComboBoxでデータ選択
□投稿者/ WebSurfer -(2015/03/17(Tue) 19:15:28)
    No75342 (優希(ゆき) さん) に返信
    > DataGridViewにMySQLのテーブルのデータをValueMemberとDisplayMemberに入れて、選択させています。
    >
    > そのデータをDBにインサートして、再表示する際にインサートしたテーブルのデータを使用して、ComboBoxを選択させる方法を教えて下さい。

    具体的にどのようにしたいのか、何が問題なのかよく分かりませんが・・・

    以下のページが参考になりませんか?

    DataGridView に ComboBox を表示
    http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx

    DB は MySQL ではなく SQL Server ですが基本的なところは変わらないはずです。
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/

■75344  Re[2]: DataGridViewのComboBoxでデータ選択
□投稿者/ yu -(2015/03/18(Wed) 01:01:14)
    No75343 (WebSurfer さん) に返信
    > ■No75342 (優希(ゆき) さん) に返信
    >>DataGridViewにMySQLのテーブルのデータをValueMemberとDisplayMemberに入れて、選択させています。
    >>
    >>そのデータをDBにインサートして、再表示する際にインサートしたテーブルのデータを使用して、ComboBoxを選択させる方法を教えて下さい。
    >
    > 具体的にどのようにしたいのか、何が問題なのかよく分かりませんが・・・
    >
    > 以下のページが参考になりませんか?
    >
    > DataGridView に ComboBox を表示
    > http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx
    >
    > DB は MySQL ではなく SQL Server ですが基本的なところは変わらないはずです。
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/

■75345  Re[2]: DataGridViewのComboBoxでデータ選択
□投稿者/ 優希(ゆき) -(2015/03/18(Wed) 09:49:19)
    No75343 (WebSurfer さん) に返信
    > ■No75342 (優希(ゆき) さん) に返信
    >>DataGridViewにMySQLのテーブルのデータをValueMemberとDisplayMemberに入れて、選択させています。
    >>
    >>そのデータをDBにインサートして、再表示する際にインサートしたテーブルのデータを使用して、ComboBoxを選択させる方法を教えて下さい。
    >
    > 具体的にどのようにしたいのか、何が問題なのかよく分かりませんが・・・
    >
    > 以下のページが参考になりませんか?
    >
    > DataGridView に ComboBox を表示
    > http://surferonwww.info/BlogEngine/post/2014/01/23/how-to-show-combobox-column-in-datagridview.aspx
    >
    > DB は MySQL ではなく SQL Server ですが基本的なところは変わらないはずです。

    わかりにくくてすみません。

    DataGridViewでは、DataPropertyNameを設定すると、DataTableのデータを表示できますが、列をComboBoxにした場合に、同じような方法で表示することが可能か?との内容になります。
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/

■75346  Re[3]: DataGridViewのComboBoxでデータ選択
□投稿者/ shu -(2015/03/18(Wed) 09:57:58)
    No75345 (優希(ゆき) さん) に返信
    > わかりにくくてすみません。
    >
    > DataGridViewでは、DataPropertyNameを設定すると、DataTableのデータを表示できますが、列をComboBoxにした場合に、同じような方法で表示することが可能か?との内容になります。

    DataPropertyNameはセルに表示する内容でありComboBoxのドロップダウンリストの内容は通常のコンボボックスと
    ほぼ同じようにItems,DataSource,ValueMember,DisplayMemberを使用します。ただDataGridViewComboBoxの
    プロパティとして設定すると列全体の設定になるので個々に設定する場合はCell単位での設定が必要となります。


    No75343でWebSurfer さんが提示をしている内容があるのだからそれに対し試行し思考した結果を回答された方がよろしいかと思います。
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/

■75347  Re[4]: DataGridViewのComboBoxでデータ選択
□投稿者/ 優希(ゆき) -(2015/03/18(Wed) 10:20:59)
    No75346 (shu さん) に返信
    > ■No75345 (優希(ゆき) さん) に返信
    >>わかりにくくてすみません。
    >>
    >>DataGridViewでは、DataPropertyNameを設定すると、DataTableのデータを表示できますが、列をComboBoxにした場合に、同じような方法で表示することが可能か?との内容になります。
    >
    > DataPropertyNameはセルに表示する内容でありComboBoxのドロップダウンリストの内容は通常のコンボボックスと
    > ほぼ同じようにItems,DataSource,ValueMember,DisplayMemberを使用します。ただDataGridViewComboBoxの
    > プロパティとして設定すると列全体の設定になるので個々に設定する場合はCell単位での設定が必要となります。
    >
    >
    > No75343でWebSurfer さんが提示をしている内容があるのだからそれに対し試行し思考した結果を回答された方がよろしいかと思います。

    ComboBoxにデータを入れて表示させるのは出来ていますが…?
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/

■75349  Re[5]: DataGridViewのComboBoxでデータ選択
□投稿者/ shu -(2015/03/18(Wed) 10:49:52)
    No75347 (優希(ゆき) さん) に返信
    > 
    > ComboBoxにデータを入れて表示させるのは出来ていますが…?
    > 
    ・・・を詳しく。?は何に対してなのかわかりません。
    
    
    Column1はデザイナでDataGridViewComboBoxColumnとして作成済
    
            Dim tblCombo As New DataTable()
            With tblCombo.Columns
                .Add("col1")
                .Add("col2")
            End With
    
            tblCombo.Rows.Add("a", "Disp a")
            tblCombo.Rows.Add("b", "Disp b")
            tblCombo.Rows.Add("c", "Disp c")
            tblCombo.Rows.Add("d", "Disp d")
    
            Column1.DataPropertyName = "Col3"
            Column1.DataSource = tblCombo
            Column1.ValueMember = "col1"
            Column1.DisplayMember = "col2"
    
            Dim tbl2 As New DataTable()
            With tbl2.Columns
                .Add("Col3")
                .Add("Col4")
            End With
            tbl2.Rows.Add("a", "a1")
            tbl2.Rows.Add("b", "b1")
            tbl2.Rows.Add("a", "a2")
            tbl2.Rows.Add("c", "c1")
            tbl2.Rows.Add("d", "d1")
            DataGridView1.DataSource = tbl2
    
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/

■75348  Re[3]: DataGridViewのComboBoxでデータ選択
□投稿者/ WebSurfer -(2015/03/18(Wed) 10:46:27)
    No75345 (優希(ゆき) さん) に返信

    直接の回答は shu さんがされているのでそれを見ていただくとして、その前
    に Visual Studio を使ってデータベースの更新を行うための Windows Forms
    アプリの基本を知っておかないと話が通じにくいので、それを理解しておく
    ことをお勧めします。

    Visual Studio の「データソース構成ウィザード」を利用してアプリを作ると、
    自分では一行もコードを書かなくても以下のページの図にある構成のアプリを
    作成できます。

    Visual Studio でのデータへの接続の概要
    https://msdn.microsoft.com/ja-jp/library/wxt2cwcc(VS.80).aspx

    > DataGridViewでは、DataPropertyNameを設定すると、

    という文章から想像するに、自力で DataPropertyName を設定されているよう
    ですが、それも Visual Studio のウィザードがやってくれます。具体的な手
    順は以下のチュートリアルを見てください。

    チュートリアル : データベースへのデータの保存 (単一テーブル)
    https://msdn.microsoft.com/ja-jp/library/0f92s97z(VS.80).aspx

    先の私の回答で紹介した記事ではステップ 1 〜 7 が相当します。

    これを基本に、特定の列(サンプルでは Category と Supplier)を ComboBox
    で表示する手順がステップ 8 〜 22 です。

    ステップ 8 〜 16 では、Category 列の ComboBox のデータソースに使う
    DataTable を Visual Studio のウィザードを利用して作成しています。

    ステップ 17 〜 22 では、Supplier 列の ComboBox のデータソースに使う
    DataTable を自力で ADO.NET ライブラリを使って作成しています。
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/

■75351  Re[1]: DataGridViewのComboBoxでデータ選択
□投稿者/ 魔界の仮面弁士 -(2015/03/18(Wed) 12:20:50)
    No75342 (優希(ゆき) さん) に返信
    > DataGridViewにMySQLのテーブルのデータをValueMemberとDisplayMemberに入れて、選択させています。
    > そのデータをDBにインサートして、再表示する際にインサートしたテーブルのデータを使用して、ComboBoxを選択させる方法を教えて下さい。
    
    初回表示は出来ていて、再表示だけできないということでしょうか。
    状況が良く分からないので、現状のコードを提示していただけませんか?
    
    
    DataGridView へのバインドには、DataSet(あるいは DataTable, DataView)をお使いかと思いますが、
    画面側とやりとりするのは、あくまでもその DataSet ですよね。
    
    元データが CSV であろうと MySQL であろうと、DataGridView 側から見れば同じものですし、
    そのデータが初回表示なのか再表示なのかも特に関係ない気がします。
    
    もし、初回表示は問題ないのに、再表示時に反映されないという状況であれば、
    DataSource プロパティをもう一度セットしなおしてみると良いかもしれません。
    
    
    
    > ComboBoxを選択させる方法を教えて下さい。
    
    こういうことで良いのかな…。
    
    下記ではサンプル提供の都合上、コントロールの作成や設定を
    コードで記載していますが、デザイン時に行っておいても OK です。
    
    Partial Public Class Form1
        Inherits System.Windows.Forms.Form
    
        WithEvents btn1 As New Button()
        WithEvents btn2 As New Button()
        WithEvents dgv As New DataGridView()
        WithEvents ds As New DataSet()
        WithEvents bnd As New BindingSource()
    
        ''' <summary>
        ''' 2行目の出身地ComboBoxを徳島県にするボタン
        ''' </summary>
        Private Sub btn1_Click(sender As Object, e As EventArgs) Handles btn1.Click
            dgv("出身地列", 1).Value = 36
            '上記だと、DataGridView の現在の並び順で処理されます。
            '画面上のソート順によらず編集したい場合は、DataTable の値を直接更新してください
        End Sub
    
        ''' <summary>
        ''' 新たな行を追加するボタン
        ''' </summary>
        Private Sub btn2_Click(sender As Object, e As EventArgs) Handles btn2.Click
            ds.Tables("出身一覧").Rows.Add(1200, "家康", 23)
            '↑ BindingSource を経由している場合は BindingSource の AddNew メソッドでも可
        End Sub
    
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Shown
            ds = CreateSampleData()
    
            bnd.DataSource = ds
            bnd.DataMember = "出身一覧"
            bnd.Sort = "ID"
    
            InitColumnSettings()
            dgv.Dock = DockStyle.Fill
            dgv.AutoGenerateColumns = False
            dgv.EditMode = DataGridViewEditMode.EditOnEnter
            dgv.DataSource = bnd    'BindingSource を経由させるかどうかはお好みで
            dgv.DataMember = ""
            Controls.Add(dgv)
    
            btn2.Dock = DockStyle.Top
            btn2.Text = "新たな行を追加するボタン"
            btn2.Height = 40
            Controls.Add(btn2)
    
            btn1.Dock = DockStyle.Top
            btn1.Text = "2行目の出身地ComboBoxを徳島県にするボタン"
            btn1.Height = 40
            Controls.Add(btn1)
    
            ActiveControl = btn1
        End Sub
    
        ''' <summary>
        ''' サンプルデータ
        ''' </summary>
        Private Function CreateSampleData() As DataSet
            Dim dsSample As New DataSet()
    
            Dim tblAnswer As DataTable = dsSample.Tables.Add("都道府県")
            tblAnswer.PrimaryKey = New DataColumn() {tblAnswer.Columns.Add("CD", GetType(Integer))}
            tblAnswer.Columns.Add("県名")
            tblAnswer.Rows.Add(13, "東京都")
            tblAnswer.Rows.Add(23, "愛知県")
            tblAnswer.Rows.Add(36, "徳島県")
            tblAnswer.Rows.Add(37, "香川県")
            tblAnswer.Rows.Add(40, "福岡県")
    
            Dim tblBirthplace As DataTable = dsSample.Tables.Add("出身一覧")
            tblBirthplace.PrimaryKey = New DataColumn() {tblBirthplace.Columns.Add("ID", GetType(Integer))}
            tblBirthplace.Columns.Add("名前")
            tblBirthplace.Columns.Add("出身地", GetType(Integer))
            tblBirthplace.Rows.Add(1000, "秀吉", 23)
            tblBirthplace.Rows.Add(2000, "卑弥呼", 40)
            tblBirthplace.Rows.Add(3000, "空海", 37)
            tblBirthplace.Rows.Add(4000, "漱石", 13)
    
            'リレーションシップはあってもなくても良い
            dsSample.Relations.Add(tblAnswer.Columns("CD"), tblBirthplace.Columns("出身地"))
    
            dsSample.AcceptChanges()
            Return dsSample
        End Function
    
        ''' <summary>
        ''' 各列へのデータバインド設定
        ''' </summary>
        Private Sub InitColumnSettings()
            Dim colText As DataGridViewTextBoxColumn
            Dim colCombo As DataGridViewComboBoxColumn
            dgv.Columns.Clear()
            dgv.AutoGenerateColumns = False
    
            colText = New DataGridViewTextBoxColumn()
            colText.Name = "ID列"
            colText.HeaderText = "番号"
            colText.DataPropertyName = "ID"
            colText.Width = 40
            dgv.Columns.Add(colText)
    
            colText = New DataGridViewTextBoxColumn()
            colText.Name = "名前列"
            colText.HeaderText = "偉人"
            colText.DataPropertyName = "名前"
            colText.Width = 70
            dgv.Columns.Add(colText)
    
            colCombo = New DataGridViewComboBoxColumn()
            colCombo.Name = "出身地列"
            colCombo.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
            colCombo.ValueMember = "CD"
            colCombo.DisplayMember = "県名"
            colCombo.DataSource = ds.Tables("都道府県")
            colCombo.HeaderText = "出身"
            colCombo.DataPropertyName = "出身地"
            colCombo.Width = 75
            dgv.Columns.Add(colCombo)
        End Sub
    End Class
記事No.75342 のレス /過去ログ127より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -