我在表单上有两个表单Form1(DGV1 & DGV2)
和Form2(DGV3 & DGV4)
以及Datagridview
控件。
在Form1
上有一个指向Form2
的按钮链接,用户可以在其中向Form1
datagridview(DGV1)
添加行。在Form2 → (DGV3 and DGV4)
中,第一列中有checkbox
,用户一次只能选择一行。
Form2
上有两个按钮:Done
和Add Items
当用户通过逐个选择行来点击添加项时,必须将行添加到datagridview
上的Form1
,并且当单击完成按钮时,应显示Form1
添加了所有行。
我已经实现了这个目标。
DGV1
和DGV2
中的列是
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
的{{1}}获取ItemID
的总和,并在Form → DGv2
更新SellQty
的值{1}}。
示例:DGV1
所以我需要将此值分配给For ItemID=1 sum(SellQty)=40
。
请建议。
答案 0 :(得分: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));
编辑:
对于您的更新gridview,您可以这样做:
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;
}
答案 1 :(得分:1)
我认为这段代码可能很有用
Textbox.Text = (from dr in MyDataSet.MyTable.AsEnumerable()
where !dr.IsCR_TRANSFER_AMTNull()
select dr.CR_TRANSFER_AMTNull).Sum().ToString();
答案 2 :(得分:0)
来自Habib先生想法的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()));