2013-02-08 60 views
5

Tôi có hai hình thức Form1(DGV1 & DGV2)Form2(DGV3 & DGV4) với các điều khiển Datagridview trên cả hai biểu mẫu.Nhận tổng số cột dữ liệu sử dụng LINQ cho một ID riêng biệt

Trên Form1 có liên kết nút đến Form2 nơi người dùng có thể thêm hàng vào Form1datagridview(DGV1). Trong Form2 → (DGV3 and DGV4), có một checkbox trong cột đầu tiên và người dùng chỉ có thể chọn một hàng tại một thời điểm.

Có hai nút trên Form2: DoneAdd Items

Khi người dùng nhấp chuột vào Add Items bằng cách chọn các hàng cái khác, các hàng phải được bổ sung vào datagridview trên Form1 và khi nút Done được nhấp, Form1 nên được hiển thị với tất cả các hàng được thêm vào.

Tôi đã đạt được điều này.

Các cột trong DGV1DGV2

DGV1 Cột

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

DGV2 Cột

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

Trong tải của Form1, làm thế nào tôi có thể nhận được số tiền của SellQty tùy thuộc vào ItemID cho Form → DGv2 và cập nhật giá trị SellQty trong DGV1.

Ví dụ: For ItemID=1 sum(SellQty)=40

vì vậy tôi cần phải gán giá trị này để DGV1 SellQty Column=40.

Vui lòng tư vấn.

Trả lời

6

Tiếp theo sẽ cho bạn tổng số lượng cho ItemID == 1-(chắc chắn rằng bạn sử dụng các tên cột chính xác cho DataGrid của bạn)

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

EDIT:

Đối với chế độ xem lưới đang cập nhật, bạn có thể làm:

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

Xin chào ... Tôi đang nhận được tổng cho một ID cụ thể bằng cách lặp qua GridView và sử dụng đối tượng datatable Value = dtBatchSellQty.Tính toán ("Tổng (SellQty)", "BatchItemID = '" + ItemID.ToString() + "'"); sum = Convert.ToInt32 (Giá trị); Câu hỏi của tôi Cách gán giá trị này cho cột SellQty của ô DGV1 trong đó ItemID = 1 – Prathap

+0

@ user2002785, Bạn có thể lặp lại hàng GridView và đặt 'SellQty' thành tổng, nhưng tôi tin câu hỏi của bạn để có được tổng số bằng LINQ – Habib

+0

Yeah Habib ... tôi đã sử dụng LINQ bây giờ ... để có được sum.But tôi đã không nhận được làm thế nào để thiết lập giá trị .. chúng ta cần rowIndex của hàng nơi ItemId là phù hợp với – Prathap

1

Tôi nghĩ rằng mã này có lẽ usfull

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

Hi ... Tôi nhận được số tiền cho một ID cụ thể bằng cách lặp qua GridView và sử dụng giá trị gia tăng đối tượng DataTable = dtBatchSellQty.Compute ("Sum (SellQty) "," BatchItemID = '"+ ItemID.ToString() +"' "); sum = Convert.ToInt32 (Giá trị); Câu hỏi của tôi Làm thế nào để gán giá trị này cho cột SellQty của ô DGV1 trong đó ItemID = 1 – Prathap

0

Một phiên bản của LINQ từ ý tưởng của ông Habib

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

Hi Spajce ... Chúng ta gặp lại .. Vấn đề là làm thế nào để gán giá trị này cho ô DGQ1 SellQty nơi ItemId = 1 hoặc 2 hoặc 3 – Prathap

Các vấn đề liên quan