Ik zit al een paar dagen met een probleempje wat ik nog steeds niet opgelost krijg.
In mijn project heb ik een DataGridView.
Deze word gevuld met gegevens uit een ArrayList.
Die ArrayList word weer gevuld door een functie uit een andere klasse.
Dat stukje code ziet er als volght uit(en werkt perfect)
op datzelfde form heb ik een TreeView met nodes.
Als ik op Node1 Klik , dan word de DataGridView mooi gevuld met de correcte gegevens.
Oftewel , bovenstaande code word netjes uitgevoerd.
Ik zal het event van de nodeDoubleClick ook even posten
Klik ik op Node2 , dan word de functie weer herhaalt , echter natuurlijk met de waarde die aan Node2 hoort.
Dit werkt alleen niet correct.
Want zodra ik op Node2 klik , worden wel alle functies correct uitgevoerd , en alle waarde ook correct doorgegeven(gecontroleerd met Console.Writeline()) , maar het DataGridView word niet correct weergegeven.
Er komen onder de bestaande items van Node1 , de nieuwe items van Node2 te staan.
Maar dat wil ik namelijk niet.
Ik wil dat het DataGridView compleet geleegd word , zodat deze geen data van Node1 meer bevat.
Hij moet daarna alleen maar de items uit de ArrayList laten zien die gecreeerd zijn bij Node2.
De onderstaande mogelijkheden heb ik al geprobeerd , maar alles leidt tot exact hetzelfde resultaat
Als ik google , verwijzen bijna alle resultaten naar Rows.Clear , dat werkt alleen bij mij helaas niet.
Hopelijk kunnen jullie mij weer een beetje de goede richting in sturen
In mijn project heb ik een DataGridView.
Deze word gevuld met gegevens uit een ArrayList.
Die ArrayList word weer gevuld door een functie uit een andere klasse.
Dat stukje code ziet er als volght uit(en werkt perfect)
C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| private void fillDataGrid1(string nodeName) { //retrieve all information from the xml getName = podList.loadName(nodeName); getDesc = podList.loadDesc(nodeName); getDate = podList.loadDate(nodeName); loadXml = podList.loadXml(nodeName); Console.WriteLine(nodeName); //fill the dataGridView1 on the main tab for (int i = 0; i < getName.Count; i++) { dataGridView1.Rows.Add(); dataGridView1.Rows[i].Cells[0].Value = getName[i]; dataGridView1.Rows[i].Cells[1].Value = getDesc[i]; dataGridView1.Rows[i].Cells[3].Value = getDate[i]; } } |
op datzelfde form heb ik een TreeView met nodes.
Als ik op Node1 Klik , dan word de DataGridView mooi gevuld met de correcte gegevens.
Oftewel , bovenstaande code word netjes uitgevoerd.
Ik zal het event van de nodeDoubleClick ook even posten
C:
1
2
3
4
5
| private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { string nodeName = treeView1.SelectedNode.Name; fillDataGrid1(nodeName); } |
Klik ik op Node2 , dan word de functie weer herhaalt , echter natuurlijk met de waarde die aan Node2 hoort.
Dit werkt alleen niet correct.
Want zodra ik op Node2 klik , worden wel alle functies correct uitgevoerd , en alle waarde ook correct doorgegeven(gecontroleerd met Console.Writeline()) , maar het DataGridView word niet correct weergegeven.
Er komen onder de bestaande items van Node1 , de nieuwe items van Node2 te staan.
Maar dat wil ik namelijk niet.
Ik wil dat het DataGridView compleet geleegd word , zodat deze geen data van Node1 meer bevat.
Hij moet daarna alleen maar de items uit de ArrayList laten zien die gecreeerd zijn bij Node2.
De onderstaande mogelijkheden heb ik al geprobeerd , maar alles leidt tot exact hetzelfde resultaat
C:
1
2
3
4
| .Rows.Delete()(met loops etc etc) Rows.Clear() dataGridView1.SelectAll(); dataGridView1.ClearSelection(); |
Als ik google , verwijzen bijna alle resultaten naar Rows.Clear , dat werkt alleen bij mij helaas niet.
Hopelijk kunnen jullie mij weer een beetje de goede richting in sturen
[ Voor 5% gewijzigd door degroot op 14-03-2007 19:34 ]
www.degroot-it.nl