2013-02-08 61 views
5

我有两种形式Form1(DGV1 & DGV2)Form2(DGV3 & DGV4)Datagridview两个窗体上的控件。获取datagridview列使用Linq为一个不同的ID

Form1上有一个链接到Form2的按钮链接,用户可以在此链接添加行到Form1datagridview(DGV1)。在Form2 → (DGV3 and DGV4)中,第一列中有一个checkbox,用户一次只能选择一行。

上有Form2两个按钮:DoneAdd Items

当用户点击通过选择行一个接一个,行必须被添加到datagridviewForm1和被点击完成按钮时添加项目,Form1应该与所有添加的行一起显示。

我已经实现了这一点。

DGV1DGV2

DGV1列

Sno Desciption SellQty ItemID 
---------------------------- 
1 ABC  0   1 
2 XYZ  0   2 

DGV2列

Sno BatchNo SellQty ItemID 
---------------------------- 
1 123  10   1 
2 528  20   2 
1 568  30   1 
2 522  40   2 

期间Form1加载,我怎么能得到的总和SellQty取决于ItemIDForm → DGv2并更新DGV1中的值SellQty

实施例:For ItemID=1 sum(SellQty)=40

所以我需要这个值分配给DGV1 SellQty Column=40

请指教。

回答

6

下面就给您总量为ItemID == 1 - (确保你使用正确的列名称为您的数据网格)

int total = DGV1.Rows.Cast<DataGridViewRow>() 
        .Where(r=> Convert.ToInt32(r.Cells["ItemID"].Value) == 1) 
        .Sum(t=> Convert.ToInt32(t.Cells["SellQty"].Value)); 

编辑:你可以这样做:

for (int i = 0; i < DGV1.Rows.Count; i++) 
{ 
    if (Convert.ToInt32(DGV1.Rows[i].Cells["ItemID"].Value) == 1) 
     DGV1.Rows[i].Cells["SellQty"] = total; 
} 
+0

DGV1单元的SellQty列嗨...我通过循环gridview和使用数据表对象Value = dtBatchSellQty获取特定ID的总和。Compute(“Sum(SellQty)”,“BatchItemID ='”+ ItemID.ToString()+“'”); sum = Convert.ToInt32(Value);我的问题如何将此值分配给DGID1单元格的SellQty列,其中ItemID = 1 – Prathap 2013-02-08 12:47:14

+0

@ user2002785,您可以迭代GridView行并将'SellQty'设置为total,但我相信您的问题可以使用LINQ – Habib 2013-02-08 12:50:04

+0

Yeah Habib ...我现在用Linq来得到总和。但是我没有得到如何设置值..因为我们需要rowId的ItemId是匹配的行 – Prathap 2013-02-08 12:57:10

1

我觉得这个代码也许usfull

Textbox.Text = (from dr in MyDataSet.MyTable.AsEnumerable() 
       where !dr.IsCR_TRANSFER_AMTNull() 
       select dr.CR_TRANSFER_AMTNull).Sum().ToString(); 
+0

嗨,你好,我是通过循环通GridView和使用DataTable对象值= dtBatchSellQty.Compute(“求和得到一个特定ID总和(SellQty)“,”BatchItemID ='“+ ItemID.ToString()+”'“); sum = Convert.ToInt32(Value);我的问题如何将此值分配给其中ItemID = 1 – Prathap 2013-02-08 12:48:11

0

从理念LINQ的另一个版本哈比卜先生

var total = DGV1.Rows.Cast<DataGridViewRow>() 
      .Where(c => int.Parse(c.Cells[IndeOfItemId].EditedFormattedValue.ToString()) == 1) 
      .Sum(x => int.Parse(x.Cells[IndexOfSellQty].EditedFormattedValue.ToString())); 
+1

嗨Spajce ...我们再次见面..问题是如何将此值分配给DGI1 SellQty单元格,其中ItemId = 1或2或3 – Prathap 2013-02-08 12:49:17

相关问题