从DB VB.NET填充Datagridview

时间:2012-02-23 15:49:42

标签: mysql vb.net datagridview populate

我的mysql查询选择了字段(item_code,item_name,item quantity,item_selltype,item_selldetail),但其中一些字段是变体。

Dim sqlConn As String = ("SELECT item_code, item_name, item_quantity, item_selltype, item_selldetail FROM qa_items")
Dim objDataAdapter As New MySqlDataAdapter(sqlConn, objConn)

我认为查询返回:

item_code, item_name, item_quantity, item_selltype, item_selldetail
01         Ball       5              unit           10.52
02         Keyoard    10             unit           50.00
03         Gasoline   5              gallon         70.45

DataGridView控件看起来如此:

Code, Name, Inv, Unit Price, Box Price, Pound Price, Gallon Price

然后我在datagridview中需要这个结果:

Code, Name,    Inv, Unit Price, Box Price, Pound Price, Gallon Price
01    Ball     5    10.52       0          0            0
02    Keyboard 10   50.00       0          0            0
03    Gasoline 5    0           0          0            70.45

我在很多方面搜索了一些可以做到这一点的代码,但我无法成功,帮助..

1 个答案:

答案 0 :(得分:1)

我认为你需要一个翻译对象。从数据库中获取数据,并使用它来填充List<>这样的内容:

class Item
{
    public int Code { get; private set; }
    public string Name { get; private set; }
    public int Inv { get; private set; }
    [DisplayName("Unit Price")]
    public double UnitPrice { get; private set; }
    [DisplayName("Box Price")]
    public double BoxPrice { get; private set; }
    [DisplayName("Pound Price")]
    public double PoundPrice { get; private set; }
    [DisplayName("Gallon Price")]
    public double GallonPrice { get; private set; }

    public Item(int item_code, string item_name, int item_quantity, string item_selltype, double item_selldetail)
    {
        Code = item_code;
        Name = item_name;
        Inv = item_quantity;
        UnitPrice = 0;
        BoxPrice = 0;
        PoundPrice = 0;
        GallonPrice = 0;
        switch (item_selltype)
        {
            case "unit": UnitPrice = item_selldetail; break;
            case "box": BoxPrice = item_selldetail; break;
            case "pound": PoundPrice = item_selldetail; break;
            case "gallon": GallonPrice = item_selldetail; break;
            default: throw new InvalidExpressionException();
        }
    }
}

然后将网格的DataSource设置为List<Item>