2015-03-06 9 views
0

Мне не повезло, когда я опубликовал об этом, когда я программировал это приложение по-другому, поэтому я переделал программу с помощью DataAdapter вместо метода TableAdapter.Может ли кто-нибудь помочь мне в получении данных для отображения в DataGridView vb.net?

Мне нужна помощь в получении данных для отображения внутри инструмента DataGridView в vb.net. Я не уверен, что я делаю неправильно здесь ... Данные отображаются в списке только отлично. но не будет отображаться в инструменте DataGridView. DataGridView отобразит длину строки. Непонятно почему ... См. Мой код ниже. (BTW, я создал список только для целей тестирования и не хочу его использовать)

Что делает программа: пользователь помещает галочку в каждом проекте дома (например, цементный труд), а проект получает список инструментов необходимых для выбранного проекта. Имена проектов находятся в флажках, а событие checkChanged передает текст переменной «ProjectName» в инструкции SQL select.

Private Sub Button1_Click_2(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
    Dim connection As OleDbConnection 

    Dim cmdString As String = "Select Distinct ToolName,Notes From Tools Where ProjectName = '" & carpentry & "' or ProjectName = '" & cementWork & "' Or ProjectName= '" & dryWall & "' Or ProjectName = '" & electrical _ 
       & "' Or ProjectName = '" & HVAC & "' Or ProjectName = '" & laminateFlooring & "' Or ProjectName = '" & painting & "' Or ProjectName = '" & plumbing _ 
       & "' Or ProjectName = '" & texture & "' Or ProjectName = '" & tileWork & "' Or ProjectName = '" & vinylFlooring & "'" 

    connection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=SaintEnterprises.mdb") 


    Dim adapter As New OleDbDataAdapter(cmdString, connection) 

    Dim tools As New DataSet 

    connection.Open() 

    adapter.Fill(tools) 

    Dim toolslist As New List(Of String) 


    ListBox1.Items.Clear() 

    For Each row As DataRow In tools.Tables(0).Rows 

     Dim s As String = row("toolname").ToString 

     'toolslist.Add(row("toolName").ToString) 'Does same thing as line toollist.add(s) below 


     toolslist.Add(s.ToString) 'add to List 

     ListBox1.Items.Add(s.ToString) 'Displays the type of tools based on the query. 


    Next 

    ToolsDataGridView.DataSource = toolslist 'displays the length (Total # of letters) of each toolname' 

End Sub 

Хотя я, вероятно, не вернуться к делать это с помощью таблицы адаптера, если вы хотите, чтобы увидеть мой способ программирования это приложение с помощью TableAdapter, смотрите по этой ссылке.

ответ

0

Мне кажется, вам нужен DataTable для заполнения вашего DataGridView. Преобразуйте DataSet-строки в DataTable.

Я пробовал это, и это отлично работает для меня (при условии, что соединение с базой данных работает).

Dim oData As New System.Data.DataTable 

For Each oRow As System.Data.DataRow In tools.Tables(0).Rows 
    oData.ImportRow(oRow) 
Next 

ToolsDataGridView.DataSource = oData