0

かなり複雑なアプリでリストビューを正常に使用してきましたが、本当に DataGridView を使用したいのですが、機能させることができませんでした。クラスまたは独自の疑似ミドルウェアを使用してデータを読み取り、テーブルをコントロールにバインドすることを避けています。正しく動作しないコードの簡単な例を次に示します。

    Dim ds As New DataSet
    Dim nrows as Integer

    ds = dbio.ReadLocations("") 'Reads place names, with an optional search string
    nrows = ds.Tables(0).Rows.Count

    'Note: I can insert code here that successfully displays the data in a listview

    Dim dtStates As DataTable = New DataTable("TableName")
    Dim drStates As DataRow 'A component row of dtstates
    Dim dr As DataRow 'A component row of the result set, ds
    dtStates.Clear()

    'There are just 3 columns in the data grid
    dtStates.Columns.Add("ID", GetType(String))
    dtStates.Columns.Add("StateName", GetType(String))
    dtStates.Columns.Add("Country", GetType(String))

    'Build the data table, row-by-row
    For i = 1 To nRows
        dr = ds.Tables(0).Rows(i - 1)  'Get a row from the populated data set

        drStates = dtStates.NewRow     'Create a new row object
        'Populate the new row object
        drStates("ID") = dr("ID").ToString    
        drStates("StateName") = dr("StateName")
        drStates("Country") = dr("Country")
        'Put the new row object into the data table
        dtStates.Rows.Add(drStates)
    Next

    'Bind the DataGridView to my data table
    grdStates.DataSource = dtStates

私のグリッドはいわば「点灯」し、明らかに適切な数の行があり、データがありません。私の最善の推測は、DataGridView の DataMember を定義する必要があるということですが、そこにどの値を配置する必要があるか想像できません。grdStates.DataMember="TableName" およびその他の値 ("" も含む) を試しましたが、何も機能しません。

4

1 に答える 1

0

質問にまだコメントを追加できないため、ここで仮定します。つまり、DataGridView を作成し、dtStates に追加された列とは別に列を追加したということです。私は最近、あなたと同じ問題を経験したので、あなたの質問に至りました。私の問題は、3 つの列を持つ DataGridView を定義し、そのデータソースを既に 3 つの列を持つ dataTable に設定していたことです。データテーブルの列を DataGridView にマップすると思いました。実際には、データテーブルの各行のデザイン インターフェイスを介して追加した 3 つの列のみが表示されましたが、それらは空でした。

これに対する最初の手がかりは、行を選択して Ctrl+C を押し、その結果を Notepad++ に貼り付けたときでした。「最初の」列の前に 4 つのタブ位置がありました。DataGridView から手動の列定義を削除して、その唯一の列が割り当てたデータテーブルから取得されるようにしました。これで、データは期待どおりに表示されます。

必要な幅に列をフォーマットする方法をまだ理解する必要がありますが、少なくともデータはそこにあります。それが役立つことを願っています! 賢くサーフィン。

于 2016-05-03T19:09:59.903 に答える