首页 > 解决方案 > 变量不是类的成员

问题描述

我正在运行一个循环,以从填充了产品的数组列表中将行添加到数据表中。我可以获得第一个对象项目,但是以下项目带来了以下问题:

错误 BC30456 'itemName' 不是 'Product' 的成员

逐步浏览解决方案,我可以看到该数组确实包含我要显示的对象项。

Product class
public class Product
{
private int itemQuantity { get; set; }
public string itemID { get; set; }
private string itemName { get; set; }
private string itemCategory { get; set; }
private double itemPrice { get; set; }
private string itemDescription { get; set; }


public Product()
{
}

public Product(string ID, string name, string category, double price, string description)
{
    itemID = ID;
    itemName = name;
    itemCategory = category;
    itemPrice = price;
    itemDescription = description;
    itemQuantity = 1;
}
}

以及我向数据表添加行的方法

Public Sub createShoppingCartTable()

    Dim tableColumnCode As System.Data.DataColumn = New System.Data.DataColumn
    With tableColumnCode
        .DataType = System.Type.GetType("System.String")
        .ColumnName = "ProductCode"
        .DefaultValue = "0"
    End With
    ShoppingCartTable.Columns.Add(tableColumnCode)

    Dim tableColumnName As System.Data.DataColumn = New System.Data.DataColumn
    With tableColumnName
        .DataType = System.Type.GetType("System.String")
        .ColumnName = "Name"
        .DefaultValue = "unknown"
    End With
    ShoppingCartTable.Columns.Add(tableColumnName)


    Dim tableColumnQuantity As System.Data.DataColumn = New System.Data.DataColumn
    With tableColumnQuantity
        .DataType = System.Type.GetType("System.String")
        .ColumnName = "Quantity"
        .DefaultValue = "1"
    End With
    ShoppingCartTable.Columns.Add(tableColumnQuantity)

    Dim tableColumnPrice As System.Data.DataColumn = New System.Data.DataColumn
    With tableColumnPrice
        .DataType = System.Type.GetType("System.Int32")
        .ColumnName = "Price"
        .DefaultValue = "0"
    End With
    ShoppingCartTable.Columns.Add(tableColumnPrice)

    Dim tableColumnTotalPrice As System.Data.DataColumn = New System.Data.DataColumn
    With tableColumnTotalPrice
        .DataType = System.Type.GetType("System.Int32")
        .ColumnName = "TotalPrice"
        .DefaultValue = "0"
    End With
    ShoppingCartTable.Columns.Add(tableColumnTotalPrice)


    'create rows with products added to cart
    Dim tableRow As System.Data.DataRow = ShoppingCartTable.NewRow()
    Dim intMaxRows As Integer = shoppingCart.Count - 1
    Dim i As Integer
    Dim localObj As New Product()

    For i = 0 To intMaxRows
        localObj = shoppingCart(i)
        tableRow = ShoppingCartTable.NewRow()
        tableRow("ProductCode") = localObj.itemID
        tableRow("Name") = localObj.itemName
        tableRow("Quantity") = localObj.itemQuantity
        tableRow("Price") = localObj.itemPrice
        tableRow("TotalPrice") = localObj.itemQuantity * localObj.itemPrice
        ShoppingCartTable.Rows.Add(tableRow)
    Next

    Me.dgDatagrid.DataSource = ShoppingCartTable
    Me.dgDatagrid.DataBind()
End Sub
End Class

我的解决方案正确显示了 itemID,但是之后的一切都因上述错误而失败。

标签: asp.net.net

解决方案


也许这是访问修饰符(public/ private)的问题。尝试将类中的private关键字更改为Productpublic


推荐阅读