[C#] DataGridview Leading Zero op 1 kolom

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Thorchy
  • Registratie: Januari 2009
  • Laatst online: 21-08-2024
Ik ben al de hele dag bezig geweest met het zoeken van een oplossing op GoT en Google maar ik kan het maar niet vinden.

Ik laat eerst een XMLdocument inladen in een DataGridView, nu is het probleem dat ik in de eerste kolom allemaal getallen heb die gesorteerd moeten worden, maar ik loop tegen het probleem aan dat ik geen leading zero heb. Ik ben ten einde raad en zou echt niet weten hoe ik deze moet toevoegen in de volgende code:

C#:
1
2
3
4
5
6
7
8
9
10
11
XmlDataDocument xmlDatadoc = new XmlDataDocument();
xmlDatadoc.DataSet.ReadXml(Filename());
DataSet ds = new DataSet("collector DataSet");
ds = xmlDatadoc.DataSet;
dgvReeks1.DataSource = ds.DefaultViewManager;
dgvReeks1.DataMember = "reeks";

dgvReeks1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
DataGridViewColumn columnTitel = dgvReeks1.Columns[1];
columnTitel.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
columnTitel.FillWeight = 500;


Deze code word aangeroepen nadat een combobox van waarde veranderd zodat de dataGridView gevuld word met de XML.

Als er iemand mij even in de goede richting kan zetten, ik ben al sinds gisteren aan het zoeken met google maar ik weet echt niet welke code ik waar moet zetten om resultaat te krijgen. (Bvb: 001 ipv 1).

Why do we tell you to turn it off and on again? Because we don't have the slightest clue what's wrong with it, and it's really easy to induce coma in computers and have their built-in team of automatic doctors try to figure it out for us.


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

[google=datagridview column format], How to: Format Data in the Windows Forms DataGridView Control, DataGridViewCellStyle.Format Property .

Zoiets? :P Geen idee of je daarmee kan wat je wil.

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Thorchy
  • Registratie: Januari 2009
  • Laatst online: 21-08-2024
Deze was ik inderdaad al tegengekomen op Google, maar waar ik ze ook plaats, het heeft geen effect.
Ik kan wel de getallen opvragen via
C#:
1
dgvReeks1.Columns[0].ToString();


en daar kan ik dan weer PadLeft(3,'0') op toepassen, maar hoe kan ik deze dan weer wegschrijven? Gewoon via
C#:
1
dgvReeks1.Rows.Add();
?

Why do we tell you to turn it off and on again? Because we don't have the slightest clue what's wrong with it, and it's really easy to induce coma in computers and have their built-in team of automatic doctors try to figure it out for us.


Acties:
  • 0 Henk 'm!

  • Alex)
  • Registratie: Juni 2003
  • Laatst online: 21-08 11:20
C#:
1
dgvReeks1.Rows[4].Columns[1] = PadLeft(dgvReeks1.Rows[4].Columns[1].ToString().PadLeft(3, '0');

Zoiets verwacht ik dan.

Maar als het toekennen van formatting niet lukt, is je column niet goed gebind aan de datasource, verwacht ik. Als alles juist is gebind kun je namelijk gewoon string formatting gebruiken.

We zullen wat code van je dataset en van je gridview moeten zien om dat te kunnen bepalen, verwacht ik.

We are shaping the future


Acties:
  • 0 Henk 'm!

Verwijderd

Waar heb je die leading zero voor nodig? Zodat je lexicografisch kunt sorteren?

Kun je niet beter een eigen IComparer in elkaar zetten en die gebruiken? Dan kun je namelijk zelf de getallen-als-string omzetten naar een gewone integer, en die dan vergelijken.

Ik heb nog nooit met C# gewerkt, maar ik weet wel dat deze oplossing vrij standaard is in JFace. Ik denk ook dat het een stuk flexibeler werkt dan uitgaan van de ingebouwde sorteermethode als je opeens heel andere data wil gebruiken (maar ik weet niet hoe goed Microsoft z'n System.Windows.Forms heeft bedacht).

Acties:
  • 0 Henk 'm!

  • Thorchy
  • Registratie: Januari 2009
  • Laatst online: 21-08-2024
Eerst en vooral sorry voor het late antwoord.

@Alex): Bij het gebruik van jouw code krijg ik een error die meld dat ik geen Columns kan gebruiken na het gebruik van Rows. Na dat ik wat aanpassingen had verricht kreeg ik als error "Error 1 Property or indexer 'System.Windows.Forms.DataGridViewColumnCollection.this[int]' cannot be assigned to -- it is read only"

Dus ik vermoed dat er inderdaad iets mis is met mijn binding met de datasource, hier zal ik nog eens naar kijken.

@Tinctorius: Het is inderdaad om alles makkelijk te kunnen sorteren, ik zal eens een kijkje nemen naar IComparer, bedankt.

EDIT:

Oké, na 3 dagen denken en zoeken is het mij gelukt. Ik heb mijn code voor het inlezen van de XML helemaal omgegooid zodat ik nu het volgende heb:

C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
                DataTable dt = (DataTable) dgvReeks1.DataSource;
                XmlDocument xmldoc = new XmlDocument();
                xmldoc.Load(Filename());

                XmlNodeList reeksList = xmldoc.GetElementsByTagName("reeks");

                foreach (XmlNode node in reeksList)
                {
                    XmlElement reeksElement = (XmlElement)node;

                    string strNr = reeksElement.GetElementsByTagName("Nr")[0].InnerText;
                    string strTitel = reeksElement.GetElementsByTagName("Titel")[0].InnerText;
                    string strStaat = reeksElement.GetElementsByTagName("Staat")[0].InnerText;
                    string strAanwezig = reeksElement.GetElementsByTagName("Aanwezig")[0].InnerText;

                    dgvReeks1.ColumnCount = 4;
                    dgvReeks1.Columns[0].Name = "Nr.";
                    dgvReeks1.Columns[1].Name = "Titel";
                    dgvReeks1.Columns[2].Name = "Staat";
                    dgvReeks1.Columns[3].Name = "Aanwezig";

                    dgvReeks1.Rows.Add(strNr.PadLeft(3,'0'), strTitel, strStaat, strAanwezig);
                }


Iedereen hartelijk bedankt voor het meedenken!

[ Voor 53% gewijzigd door Thorchy op 24-05-2010 23:35 ]

Why do we tell you to turn it off and on again? Because we don't have the slightest clue what's wrong with it, and it's really easy to induce coma in computers and have their built-in team of automatic doctors try to figure it out for us.

Pagina: 1