0

下記のAdo.net関数と結果セットをグリッドビューでバインドしていますが、結果セットに重複する行が表示されます。

私を助けてください。

ありがとう

Private _products As New List(Of Product)
  Public Property Products As List(Of BusinessObjects.Product)
    Get
        Return _products
    End Get
    Set(ByVal value As List(Of BusinessObjects.Product))
        _products = value
    End Set
End Property

Public Function GetProductDetails() As List(Of Product)
    Dim product As New BusinessObjects.Product

    Using connection As New SqlConnection

        connection.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
        connection.Open()
        Using Command As New SqlCommand("select * from T_product", connection)

            Dim rdr As SqlDataReader
            rdr = Command.ExecuteReader
            While rdr.Read()
                product.ProductID = rdr("ProductID")
                product.ProductName = rdr("ProductName")
                Products.Add(product)
            End While

            GridView1.DataSource = Products
            GridView1.DataBind()


        End Using


    End Using

    Return Products
End Function
4

2 に答える 2

1

問題は、毎回同じ製品を更新して追加していることです。次のように、While ループ内に product オブジェクトを作成します。

Public Function GetProductDetails() As List(Of Product)

    Using connection As New SqlConnection

    connection.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
    connection.Open()
    Using Command As New SqlCommand("select * from T_product", connection)

        Dim rdr As SqlDataReader
        rdr = Command.ExecuteReader
        While rdr.Read()
            Dim product As New BusinessObjects.Product ' product object create here
            product.ProductID = rdr("ProductID")
            product.ProductName = rdr("ProductName")
            Products.Add(product)
        End While

        GridView1.DataSource = Products
        GridView1.DataBind()

    End Using

End Using

Return Prod
于 2012-06-20T09:18:24.690 に答える
1

インスタンスDim product As New BusinessObjects.Productからの読み取り中に内部で初期化を行う必要がありますSqlDataReader

Set(ByVal value As List(Of BusinessObjects.Product))
        _products = value
    End Set
End Property

Public Function GetProductDetails() As List(Of Product)


    Using connection As New SqlConnection

        connection.ConnectionString = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
        connection.Open()
        Using Command As New SqlCommand("select * from T_product", connection)

            Dim rdr As SqlDataReader
            rdr = Command.ExecuteReader
            While rdr.Read()
                Dim product As New BusinessObjects.Product
                product.ProductID = rdr("ProductID")
                product.ProductName = rdr("ProductName")
                Products.Add(product)
            End While

            GridView1.DataSource = Products
            GridView1.DataBind()


        End Using


    End Using

    Return Products
End Function
于 2012-06-20T09:19:30.880 に答える