1

「車」というクラスがあり、この車のクラスが SQL クエリを使用して、ID、名前、タイプ、モデル、エンジン、サイズなどのプロパティを入力するとします。asp:formview にそのデータを入力するにはどうすればよいですか?

私はこれを試しました:

Private currentCar As car        
fvCarview.DataSource = currentCar 
fvCarview.DataBind()

しかし、私はこのエラーを受け取り続けます:

Data source is an invalid type.  It must be either an IListSource, IEnumerable, or IDataSource.

どんな助けでも大歓迎です!

ありがとう

4

1 に答える 1

2

簡単な方法はList(Of Car)、単一の車または単一のIEnumerable(Car)viaで を使用することcarList.Where(Function(c) c.ID = carID)です。a を使用して aおよびSqlDataAdapterを埋めることもできます。または、データベースから単一の車を選択するだけでも、完全なリストが必要ない場合に最も効率的な方法です。DataTabletable.Where(Function(r) r.Field(Of Int32)("ID") = carID)

データ表:

Private Sub fillFormView(carID As Int32)
    Using con = New SqlConnection(My.Settings.SqlConnection)
        Using da = New SqlDataAdapter("SELECT ID, Name, Type, Model, Engine, Size FROM TCAR WHERE ID=@ID", con)
            da.SelectCommand.Parameters.AddWithValue("@ID", carID)
            Dim table = New DataTable
            da.Fill(table)
            fvCarview.DataSource = table
            fvCarview.DataBind()
        End Using
    End Using
End Sub

に 1 台の車を使用したカスタムの Car-Class アプローチを次に示しますList(Of Car)

Class Car
    Public Property ID As Int32
    Public Property Name As String
    Public Property Type As String
    Public Property Model As String
    Public Property Engine As String
    Public Property Size As Double
End Class

Private Sub fillFormView(carID As Int32)
    Using con = New SqlConnection(My.Settings.SqlConnection)
        Using cmd = New SqlCommand("SELECT ID, Name, Type, Model, Engine, Size FROM TCAR WHERE ID=@ID", con)
            cmd.Parameters.AddWithValue("@ID", carID)
            con.Open()
            Using rd = cmd.ExecuteReader()
                rd.Read()
                Dim carList = New List(Of Car)
                Dim car = New Car()
                car.ID = rd.GetInt32(0)
                car.Name = rd.GetString(1)
                car.Type = rd.GetString(2)
                car.Model = rd.GetString(3)
                car.Engine = rd.GetString(4)
                car.Size = rd.GetDouble(5)
                carList.Add(car)
                fvCarview.DataSource = carList
                fvCarview.DataBind()
            End Using
        End Using
    End Using
End Sub
于 2012-11-05T20:44:02.157 に答える