2013-02-08 18 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

相關問題