2013-04-28 11 views
8

मेरे पास एक सूची है जिसमें लेनदेन ऑब्जेक्ट्स की श्रृंखला शामिल है। मैं जो करने की कोशिश कर रहा हूं वह है कि इन लेनदेन वस्तुओं को एक फॉर्म लोड करने पर डेटाग्रिडव्यू नियंत्रण में प्रदर्शित करना है, मूल रूप से डेटाग्रिडव्यू को सूची में प्रत्येक लेनदेन ऑब्जेक्ट्स के लिए डेटा प्रदर्शित करने के लिए लेनदेन रजिस्टर के कुछ का प्रतिनिधित्व करना चाहिए।ऑब्जेक्ट्स की सूची के साथ datagridview populating

डेटाग्रिडव्यूज़ का उपयोग करने पर मुझे अनुभव की कमी को स्वीकार करना होगा और मुझे यह समझने में कुछ कठिनाई हो रही है कि मुझे यहां क्या करना है।

मेरा सवाल है, मैं डेटाग्रिडव्यू में प्रदर्शित करने के लिए सूची में से प्रत्येक ऑब्जेक्ट का विवरण प्राप्त करने के बारे में कैसे जा सकता हूं?

मेरा कोड यहां है।

पहले लेनदेन वर्ग:

public class Transaction 
{ 
    // Class properties 
    private decimal amount; 
    private string type; 
    private decimal balance; 
    private string date; 
    private string transNum; 
    private string description; 

    // Constructor to create transaction object with values set. 
    public Transaction(decimal amount, string type, decimal currBal, string date, string num, string descrip) 
    { 
     this.amount = amount; 
     this.type = type; 
     this.balance = currBal; 
     this.date = date; 
     this.transNum = num; 
     this.description = descrip; 
    } 

    // Get and Set accessors to allow manipulation of values. 
    public decimal Amount 
    { 
     get 
     { 
      return amount; 
     } 
     set 
     { 
      amount = value; 
     } 
    } 
    public string Type 
    { 
     get 
     { 
      return type; 
     } 
     set 
     { 
      type = value; 
     } 
    } 
    public decimal Balance 
    { 
     get 
     { 
      return balance; 
     } 
     set 
     { 
      balance = value; 
     } 
    } 
    public string Date 
    { 
     get 
     { 
      return date; 
     } 
     set 
     { 
      date = value; 
     } 
    } 
    public string TransNum 
    { 
     get 
     { 
      return transNum; 
     } 
     set 
     { 
      transNum = value; 
     } 
    } 
    public string Description 
    { 
     get 
     { 
      return description; 
     } 
     set 
     { 
      description = value; 
     } 
    } 

    public decimal addCredit(decimal balance, decimal credit) 
    { 
     decimal newBalance; 
     newBalance = balance + credit; 
     return newBalance; 
    } 

    public decimal subtractDebit(decimal balance, decimal debit) 
    { 
     decimal newBalance; 
     newBalance = balance - debit; 
     return newBalance; 
    } 
    } 
} 

अब "रजिस्टर" फार्म के लिए कोड:

public partial class Register : Form 
{ 
    List<Transaction> tranList = new List<Transaction>(); 

    public Register(List<Transaction> List) 
    { 
     InitializeComponent(); 
     this.tranList = List; 
    } 

    private void Register_Load(object sender, System.EventArgs e) 
    { 
     //regView represents the Datagridview that I'm trying to work with 
     regView.AutoSize = true; 
     regView.DataSource = tranList; 
     regView.Rows.Add(tranList[0]); 
    } 
} 

और यहाँ उत्पादन मैं मिलता है। Register output

उत्तर

9

इसमें वास्तव में दो उच्च स्तर के दृष्टिकोण हैं।

1) मैन्युअल रूप से बनाई गई पंक्तियों को सीधे DataGridView पर जोड़ें। इस मामले में, चीजों को बदलने के रूप में आपको उन्हें मैन्युअल रूप से अपडेट/निकालना होगा। यह दृष्टिकोण "ठीक है" यदि आप इसे प्रारंभ करने के बाद प्रदर्शन की सामग्री को बदलने/बदलने का इरादा नहीं रखते हैं। यदि आप करते हैं तो यह अस्थिर हो जाता है।

इसे सीधे जोड़ने के लिए, आपको DataGridViewRow बनाने की आवश्यकता है, और इसे व्यक्तिगत मानों के साथ पॉप्युलेट करना होगा, और फिर DataGridView.Rows पर जोड़ें।

2) डेटा डीजीवी बांधता है। DataGridView पर डाटाबेसिंग के बारे में कई लेख हैं। कुछ मामलों में, अपने डेटा को DataTable पर जोड़ना आसान है, और उसके बाद DataView निकालें, और DataGridView को DataView पर बाध्य करें। अन्य लोगों को सीधे संग्रह में बाध्य करना आसान लगता है।

कोडप्रोजेक्ट के पास उस पथ को शुरू करने के लिए एक सभ्य लेख है, लेकिन एक त्वरित Google खोज कई अन्य लेख उत्पन्न करेगी।

http://www.codeproject.com/Articles/24656/A-Detailed-Data-Binding-Tutorial

+0

मैं के रूप में यह है, क्योंकि यह डेटा में कोई भी परिवर्तन के लिए खातों से कम kludgy समाधान हो गया लगता है डेटा बाइंडिंग पर विचार किया था स्रोत। संपादित करें: मैंने बहुत जल्दी प्रवेश किया है। मैं यह कहने की कोशिश कर रहा था कि मुझे डेटा बाध्यकारी के बारे में पूरी तरह से यकीन नहीं था क्योंकि मैंने वास्तव में इसे पहले नहीं किया है। मैं आपके द्वारा प्रदान किए गए लिंक पर एक नज़र डालेगा, धन्यवाद। – morris295

+0

यह पहली बार जटिल है जब आप इससे परिचित नहीं हैं, लेकिन समय और अभ्यास के साथ यह आसान हो जाता है (हालांकि यह आपको अभी भी कई निराशाजनक क्षणों की पेशकश कर सकता है)। आपके ऊपर की स्थिति यह प्रतीत होती है कि इसे शुरू करने के लिए एक आसान उदाहरण होना चाहिए, तो शुभकामनाएं। यदि आप उन पर आते हैं तो अधिक विशिष्ट प्रश्नों के साथ वापस आने के लिए स्वतंत्र महसूस करें। – Gjeltema

+0

मैं डाटाबेसिंग का उपयोग कर समाप्त हुआ, मार्गदर्शन के लिए धन्यवाद, यह काफी मददगार था। आपने मुझे इस पर दुःख का एक टन बचाया। – morris295

4

DGV के रूप में उपयोग:

DataGridView groupListDataGridView; 

स्तंभ:

DataGridViewTextBoxColumn groupListNameColumn; 

स्तंभ सेटअप इस तरह होना चाहिए:

groupListNameColumn.DataPropertyName = "name"; 

इस संपत्ति का उपयोग करें, अन्य सभी कॉलम जोड़े जाएंगे।

groupListDataGridView.AutoGenerateColumns = false; 

इस तरह पॉप्युलेट:

private void populateGroupList() { 
    groupListDataGridView.DataSource = null; 
    formattedGroupList = new SortableBindingList<DataGridGroupObject>(); 
    foreach (GroupObject go in StartUp.GroupList) { 
     DataGridGroupObject dggo = new DataGridGroupObject(); 
     dggo.id = go.Id; 
     dggo.name = go.Name; 
     formattedGroupList.Add(dggo); 
    } 
    groupListDataGridView.DataSource = formattedGroupList; 
    groupListDataGridView.Invalidate(); 
} 

और मॉडल:

public class DataGridGroupObject 
{ 
    public int id { get; set; }  //this will be match id column 
    public string name { get; set; } // this will be match name column 
} 
+1

सॉर्ट करने योग्य बाइंडिंगलिस्ट <>() क्या है? – Danon

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