2013-02-08 14 views
5

के लिए लिंक का उपयोग करके डेटाग्रिडव्यू कॉलम का योग प्राप्त करें मेरे पास दोनों रूपों पर Datagridview नियंत्रण के साथ दो रूप Form1(DGV1 & DGV2) और Form2(DGV3 & DGV4) हैं।एक अलग आईडी

Form1 पर Form2 पर एक बटन लिंक है जहां उपयोगकर्ता Form1datagridview(DGV1) पर पंक्तियां जोड़ सकता है। Form2 → (DGV3 and DGV4) में, पहले कॉलम में checkbox है और उपयोगकर्ता एक समय में केवल एक पंक्ति का चयन कर सकता है।

वहाँ पर Form2 दो बटन हैं:, Form1 जब उपयोगकर्ता क्लिक पर पंक्तियों एक के बाद एक, पंक्तियों Form1 पर datagridview में जोड़ा जाना चाहिए और जब हो गया बटन क्लिक किया जाता है का चयन करके आइटम जोड़ें Done और Add Items

जोड़े गए सभी पंक्तियों के साथ प्रदर्शित किया जाना चाहिए।

मैंने इसे हासिल किया है।

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 के आधार पर 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)); 

संपादित करें (यदि आप अपने datagrid के लिए सही स्तंभ नाम का उपयोग सुनिश्चित करें):

अपने अद्यतन ग्रिडव्यू के लिए आप कर सकते हैं:

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

हाय ... मुझे ग्रिडव्यू के माध्यम से लूपिंग करके और डेटाटेबल ऑब्जेक्ट वैल्यू = डीटीबैचसेलकटी का उपयोग करके किसी विशेष आईडी के लिए योग मिल रहा है।गणना ("Sum (SellQty)", "बैचइटेम आईडी = '" + ItemID.ToString() + "'"); योग = कनवर्ट करें। IInt32 (मान); मेरा प्रश्न डीजीवी 1 सेल के सेलक्यूटी कॉलम पर यह मान कैसे असाइन करें, जहां आइटम आईडी = 1 – Prathap

+0

@ user2002785, आप ग्रिड व्यू पंक्तियों को फिर से चालू कर सकते हैं और कुल में 'सेलक्यूटी' सेट कर सकते हैं, लेकिन मेरा मानना ​​है कि LINQ – Habib

+0

हाँ का उपयोग करके कुल मिलाकर आपका प्रश्न हबीब ... मैंने अब लिंक प्राप्त किया है .. योग प्राप्त करने के लिए। लेकिन मुझे मूल्य निर्धारित करने के लिए नहीं मिला .. हमें पंक्ति की इंडेक्स की आवश्यकता है जहां आइटम आईडी – Prathap

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 ("योग द्वारा एक विशेष आईडी के लिए राशि मिल रहा है (SellQty) "," बैचइटेम आईडी = '"+ ItemID.ToString() +"' "); योग = कनवर्ट करें। IInt32 (मान); मेरा प्रश्न डीजीवी 1 सेल के सेलकटी कॉलम पर यह मान कैसे असाइन करें जहां आइटम आईडी = 1 – Prathap

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

हाय स्पैज ... हम दोबारा मिलते हैं .. समस्या यह है कि इस मूल्य को डीजीवी 1 सेलक्यूटी सेल में कैसे असाइन करें जहां ItemId = 1 या 2 या 3 – Prathap

संबंधित मुद्दे