Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将网格列与具有不同值的特定列绑定_C#_.net_Winforms - Fatal编程技术网

C# 将网格列与具有不同值的特定列绑定

C# 将网格列与具有不同值的特定列绑定,c#,.net,winforms,C#,.net,Winforms,我有以下数据库表>> TradeNo | Buy_Sell | Trade_Qty | Market_Price 205412 1 50 300 205487 2 30 350 208754 1 20 200 此表中有“买入\卖出”列。买入=1,卖出=2 绑定网格时,值将按原样显示 但是,我想在网格中显示它们为> Trade

我有以下数据库表>>

TradeNo | Buy_Sell | Trade_Qty | Market_Price

205412     1           50            300   

205487     2           30            350 

208754     1           20            200
此表中有“买入\卖出”列。买入=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);
}

代码中应该有哪些更改?

如果
买入卖出
是引用“买入卖出类型”表的外键列,请将查询更改为以下内容(添加联接):

否则,您可以使用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);
}
试试看
{
da=新的SqlDataAdapter(“从tradeFile中选择TradeNo、Buy\u Sell、TradeQty、Market\u Price”,康涅狄格州);
数据集ds=新数据集();
da.填充(ds);
gvTrade.dataSource=ds.Tables[0].AsEnumerable()
.选择(d=>new
{
贸易编号=d.字段(“贸易编号”),
买入卖出=d.字段(“买入卖出”)==1?“买入”:“卖出”,
交易数量=d.字段(“交易数量”),
市场价格=d.字段(“市场价格”)
}); 
}
捕获(例外情况除外)
{
MessageBox.Show(例如Message);
}

但是Buy\u Sell不是主键,所以没有Buy\u Sell\u类型表?是的,您可以在数据表上使用LINQ,DataTable上的.AsEnumerable()调用可以实现这一点。它不会给出任何错误[exception],但它不会在网格中显示任何结果@OliverIts也不会给出任何错误[exception],但它也不会在网格中显示任何结果
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);
}