Προς το περιεχόμενο
  • 0
Συνδεθείτε  
sarakinos

Γέμισμα datagridview από text file σε C#

Ερώτηση

Καλησπέρα παιδιά , έχω ένα DataGridView το οποίο γεμίζει ο χρήστης με τιμές και μετά με ένα κουμπί εξάγω αυτές τις τιμές σε ένα text file ...

Το text file είναι κάπως έτσι

 

mpla mpla Empty mpla

 

Χωρίζω δηλαδή τα πεδία με ένα tab.

 

Έχω σκαλώσει τώρα στο πως θα κάνω load τις τιμές στο DataGridView . Μπορεί κάποιος να μου δείξει κάποιον τρόπο?

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

4 απαντήσεις σε αυτή την ερώτηση

Προτεινόμενες αναρτήσεις

  • 0

Καλησπέρα παιδιά , έχω ένα DataGridView το οποίο γεμίζει ο χρήστης με τιμές και μετά με ένα κουμπί εξάγω αυτές τις τιμές σε ένα text file ...

Το text file είναι κάπως έτσι

 

mpla mpla Empty mpla

 

Χωρίζω δηλαδή τα πεδία με ένα tab.

 

Έχω σκαλώσει τώρα στο πως θα κάνω load τις τιμές στο DataGridView . Μπορεί κάποιος να μου δείξει κάποιον τρόπο?

 

Δες τα DataGridView.Rows & DataGridViewRow.Cells καθώς μέσο αυτών μπορείς να φορτώσεις χειροκίνητα τιμές στο DataGridView (εκτός και αν προτιμάς ως πηγή κάποιο DataSource).

 

Για παράδειγμα:

 

>
      dataGridView1.Rows.Clear();

           for (int RowCount = 0; RowCount < 5; RowCount++)
           {
               int NewRow = dataGridView1.Rows.Add();

               for (int CelCount = 0; CelCount < 4; CelCount++)
                   dataGridView1.Rows[NewRow].Cells[CelCount].Value =
                       String.Format("{0:D}R{1:D}C", RowCount, CelCount);                
           }            

 

(Θεωρώ ότι έχεις ορίσει στον οπτικό επεξεργαστή του VS το Row του DataGridView).

 

Με αποτέλεσμα:

 

post-41640-0-28651700-1347980049_thumb.png

 

Τώρα αν υποθέσουμε ότι έχουμε ένα πίνακα String όπου κάθε γραμμή χωρίζει τα πεδία της με TAB (\t) θα μπορούσε να γίνει ..

 

>
string[] InputData = { "mpla0-1\tmpla0-2\tEmpty0-3\tmpla0-4",
                      "mpla1-1\tmpla1-2\tEmpty1-3\tmpla1-4",
                      "mpla2-1\tmpla2-2\tEmpty2-3\tmpla2-4",
                      "mpla3-1\tmpla3-2\tEmpty3-3\tmpla3-4",
                      "mpla4-1\tmpla4-2\tEmpty4-3\tmpla4-4"
                    };

           dataGridView1.Rows.Clear();

           for (int RowCount = 0; RowCount < InputData.Length; RowCount++)
           {
               int NewRow = dataGridView1.Rows.Add();

               string[] Field = InputData[RowCount].Split('\t');

               for (int CelCount = 0; CelCount < Field.Length; CelCount++)
                   dataGridView1.Rows[NewRow].Cells[CelCount].Value = Field[CelCount];
           }

 

post-41640-0-51488000-1347980581_thumb.png

 

Υ.Γ.

Μπορεί όλα αυτά τα γίνονται πολύ πιο εύκολα και γρήγορα μέσο LINQ αλλά δεν το έχω ψάξει τόσο.

 

Καλή συνέχεια!!

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Αποφάσισα να το κάνω με xml αρχεία μιας και όλοι λένε ότι είναι καλύτερο και δεν είχα ασχοληθεί ποτέ μαζί τους ξανά στο παρελθόν...

ο κώδικας μου είναι αυτός

 

>
public void saveToFile(DataGridView dv,DataTable dt)
    {
	    int rowCount = dv.Rows.Count;
	    for (int i = 0; i < rowCount--; i++)
	    {
		    dt.Rows.Add(dv.Rows[i]);
		    MessageBox.Show("ok");
	    }
	    dt.WriteXml(xmlFile);	 

    }

 

Το θέμα είναι ότι παράγει λάθος το αρχείο στο τέλος

 

prosopiko.xml

 

>
<?xml version="1.0" standalone="yes"?>
<DocumentElement>
 <Prosopiko>
   <Onoma>DataGridViewRow { Index=0 }</Onoma>
 </Prosopiko>
</DocumentElement>

 

Για κάποιον λόγο δεν περνάει μέσα τα values των κελιών μου από το DataGridView .

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Αν και δεν έχω ασχοληθεί με την XML στο .NET, θα μπορούσες να αποθηκεύσεις κάθε DataGridView.Row ως εξής:

 

>
           DataTable DT = new DataTable("PERSONNEL");

           // Fill DataTable with DataGridView Column names
           foreach (DataGridViewColumn Col in dataGridView1.Columns)
               DT.Columns.Add(Col.Name);

           // Append DataGridView Rows to DataTable
           foreach (DataGridViewRow Row in dataGridView1.Rows)
           {
               DataRow NewRow = DT.Rows.Add();

               for (int RowCnt = 0; RowCnt < Row.Cells.Count; RowCnt++)
                   NewRow.SetField(RowCnt, Row.Cells[RowCnt].Value);
           }

           // Store DataTable (along with Schema!) to XML
           DT.WriteXml("TEST.XML", XmlWriteMode.WriteSchema);

 

Το αρχείο XML που προκύπτει σε αυτή την περίπτωση θα είναι της μορφής:

 

>
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
 <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
   <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="PERSONNEL" msdata:UseCurrentLocale="true">
     <xs:complexType>
       <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element name="PERSONNEL">
           <xs:complexType>
             <xs:sequence>
               <xs:element name="Column1" type="xs:string" minOccurs="0" />
               <xs:element name="Column2" type="xs:string" minOccurs="0" />
               <xs:element name="Column3" type="xs:string" minOccurs="0" />
               <xs:element name="Column4" type="xs:string" minOccurs="0" />
             </xs:sequence>
           </xs:complexType>
         </xs:element>
       </xs:choice>
     </xs:complexType>
   </xs:element>
 </xs:schema>
 <PERSONNEL>
   <Column1>mpla0-1</Column1>
   <Column2>mpla0-2</Column2>
   <Column3>Empty0-3</Column3>
   <Column4>mpla0-4</Column4>
 </PERSONNEL>
 <PERSONNEL>
   <Column1>mpla1-1</Column1>
   <Column2>mpla1-2</Column2>
   <Column3>Empty1-3</Column3>
   <Column4>mpla1-4</Column4>
 </PERSONNEL>
 <PERSONNEL>
   <Column1>mpla2-1</Column1>
   <Column2>mpla2-2</Column2>
   <Column3>Empty2-3</Column3>
   <Column4>mpla2-4</Column4>
 </PERSONNEL>
 <PERSONNEL>
   <Column1>mpla3-1</Column1>
   <Column2>mpla3-2</Column2>
   <Column3>Empty3-3</Column3>
   <Column4>mpla3-4</Column4>
 </PERSONNEL>
 <PERSONNEL>
   <Column1>mpla4-1</Column1>
   <Column2>mpla4-2</Column2>
   <Column3>Empty4-3</Column3>
   <Column4>mpla4-4</Column4>
 </PERSONNEL>
 <PERSONNEL />
</NewDataSet>

 

Θα μπορούσες να φορτώσεις σχετικά γρήγορα το περιεχόμενο του XML ορίζοντας το DataTable ως DataSource του DataGridView (προσοχή όμως διότι θα προστεθούν τα Column του XML) ως εξής:

 

>
           // Clear DataGridView rows & columns (!)
           dataGridView1.Rows.Clear();
           dataGridView1.Columns.Clear();

           // Load XML directly from file to DataGridView assigning it as a DataSource
           DataTable LDT = new DataTable("PERSONNEL");
           LDT.ReadXml("TEST.XML");            

           dataGridView1.DataSource = LDT;

 

Καλή τύχη!!

  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

Χίλια ευχαριστώ για τις απαντήσεις σου φίλε μου , το υλοποίησα εχθές με τον τρόπο που γράφεις στο τέλος ...

Μου αρέσει όλο και περισσότερο το .NET :)

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε έναν λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι εύκολο!

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
Συνδεθείτε  
×
×
  • Δημιουργία νέου...

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.