sarakinos Δημοσ. 18 Σεπτεμβρίου 2012 Δημοσ. 18 Σεπτεμβρίου 2012 Καλησπέρα παιδιά , έχω ένα DataGridView το οποίο γεμίζει ο χρήστης με τιμές και μετά με ένα κουμπί εξάγω αυτές τις τιμές σε ένα text file ... Το text file είναι κάπως έτσι mpla mpla Empty mpla Χωρίζω δηλαδή τα πεδία με ένα tab. Έχω σκαλώσει τώρα στο πως θα κάνω load τις τιμές στο DataGridView . Μπορεί κάποιος να μου δείξει κάποιον τρόπο?
Directx Δημοσ. 18 Σεπτεμβρίου 2012 Δημοσ. 18 Σεπτεμβρίου 2012 Καλησπέρα παιδιά , έχω ένα 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). Με αποτέλεσμα: Τώρα αν υποθέσουμε ότι έχουμε ένα πίνακα 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]; } Υ.Γ. Μπορεί όλα αυτά τα γίνονται πολύ πιο εύκολα και γρήγορα μέσο LINQ αλλά δεν το έχω ψάξει τόσο. Καλή συνέχεια!!
sarakinos Δημοσ. 19 Σεπτεμβρίου 2012 Μέλος Δημοσ. 19 Σεπτεμβρίου 2012 Αποφάσισα να το κάνω με 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 .
Directx Δημοσ. 20 Σεπτεμβρίου 2012 Δημοσ. 20 Σεπτεμβρίου 2012 Αν και δεν έχω ασχοληθεί με την 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; Καλή τύχη!! 1
sarakinos Δημοσ. 20 Σεπτεμβρίου 2012 Μέλος Δημοσ. 20 Σεπτεμβρίου 2012 Χίλια ευχαριστώ για τις απαντήσεις σου φίλε μου , το υλοποίησα εχθές με τον τρόπο που γράφεις στο τέλος ... Μου αρέσει όλο και περισσότερο το .NET
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα