绑定网格列具有不同值的特定列

时间:2013-03-20 12:19:45

标签: c# .net winforms

我有以下数据库表>>

TradeNo | Buy_Sell | Trade_Qty | Market_Price

205412     1           50            300   

205487     2           30            350 

208754     1           20            200

在此表中有专栏Buy_Sell。买= 1,卖= 2

当我绑定网格时,值显示为原样。

但是,我想在网格中将它们显示为>

    TradeNo | Buy_Sell | Trade_Qty | Market_Price

    205412     Buy           50            300   

    205487     Sell          30            350 

    205487     Buy           20            200 

我该怎么做?

我只是使用以下代码>

绑定网格
try
{
  da=new SqlDataAdapter("Select TradeNo, Buy_Sell,TradeQty,Market_Price from tradeFile",conn);
  DataSet ds=new DataSet();
  da.Fill(ds);
  gvTrade.dataSource=ds.Tables[0]; 
}
catch(Exception ex)
{
   MessageBox.Show(ex.Message);
}

代码中的变化应该是什么?

1 个答案:

答案 0 :(得分:0)

如果Buy_Sell是引用“Buy_Sell_Types”表的外键列,请将查询更改为以下内容(添加联接):

SELECT TradeNo, Buy_Sell_Types.Name, TradeQty, Market_Price 
FROM tradeFile
JOIN Buy_Sell_Types ON tradeFile.Buy_Sell = Buy_Sell_Types.PrimaryKey

否则,您可以使用LINQ转换代码中的数据:

try
{
    da=new SqlDataAdapter("SELECT TradeNo, Buy_Sell, TradeQty, Market_Price FROM tradeFile", conn);
    DataSet ds=new DataSet();
    da.Fill(ds);
    gvTrade.dataSource = ds.Tables[0].AsEnumerable()
             .Select(d => new 
             {
                 TradeNo = d.Field<int>("TradeNo"),
                 Buy_Sell = d.Field<int>("Buy_Sell") == 1 ? "Buy" : "Sell",
                 TradeQty = d.Field<int>("TradeQty"),
                 Market_Price = d.Field<double>("MarketPrice")
             }); 
}
catch(Exception ex)
{
    MessageBox.Show(ex.Message);
}