2013-08-09 76 views
6

Im một chút bị mắc kẹt trên một số mã mà im viếtĐiền một DataGridView từ SQLReader

Một phác thảo là tôi đang đọc một số dữ liệu từ một cơ sở dữ liệu SQL và wantint để hiển thị nó trong một DataGridView trên một biểu mẫu. Tôi đã xác nhận rằng có dữ liệu được trả về từ cơ sở dữ liệu nhưng tôi không chắc chắn tại sao điều này không xuất hiện. Tôi đã theo một số hướng dẫn từ internet nhưng cho đến nay không đã làm việc

đây là mã của tôi

Private Sub PopulateGrid() 
    Dim Con As New SqlClient.SqlConnection 
    Dim strCon As String = CropTrackMod.strConn 
    Dim strCommand As String = "select * from customer" 


    Try 
     Con.ConnectionString = strCon 
     Dim Cm As New SqlClient.SqlCommand(strCommand, Con) 
     Con.Open() 
     Dim reader As SqlClient.SqlDataReader = Cm.ExecuteReader() 

     'test to confirm data received 
     reader.Read() 
     MsgBox(reader.Item("ContactName")) 


     DataGridView1.AutoGenerateColumns = True 
     DataGridView1.DataSource = reader 
     DataGridView1.Refresh() 



    Catch ex As Exception 
     MessageBox.Show(ex.Message, "Error") 

    Finally 
     If Con.State = ConnectionState.Open Then 
      Con.Close() 
     End If 
    End Try 

End Sub 

tôi cũng đã cố gắng thực hiện một DataTable nhưng nhận được một lỗi chuyển đổi trên các kiểu dữ liệu bất kỳ trợ giúp sẽ được đánh giá cao

nhờ kẻ

+0

Tôi vừa quản lý để giải quyết vấn đề bằng cách triển khai dữ liệu. Tôi đã thông qua người đọc đến datatable và sau đó được giao các nguồn dữ liệu của dataridview để datatable – PowerMan2015

+0

Tôi không thấy lý do tại sao câu hỏi này đã được downvoted, đặc biệt là kể từ khi không có lời giải thích cho downvote ... – NobodysNightmare

+0

cảm ơn sự thay đổi đại diện, nhiều đánh giá cao – PowerMan2015

Trả lời

12

Bạn không thể ràng buộc một datareader trực tiếp đến một dataGridView trong WinForms. Thay vào đó, bạn có thể tải dữ liệu có thể định vị được với trình đọc của mình và gán dữ liệu có thể định mức cho nguồn dữ liệu của DataGridView

Dim dt = new DataTable() 
dt.Load(reader) 
DataGridView1.AutoGenerateColumns = True 
DataGridView1.DataSource = dt 
DataGridView1.Refresh() 
+0

xin lỗi vì trả lời muộn, tôi đã được vào kỳ nghỉ bạn hep được đánh giá cao – PowerMan2015

+0

giải pháp tuyệt vời, cảm ơn bạn – destinydz