Vraag : dataset aan xml

hallo -- ik heb nu manier teveel tijd proberend besteed berekenen hoe te om dit werk te maken. ik gebruik vs2010 en c#. ik had een verwachting dat als ik een dataset van een xmldossier bevolk -- en gespecificeerd het schema -- dat de gegevensreeks achter nieuwe rijen in de zelfde plaats zou schrijven (d.w.z. de zelfde knoop = lijstgelijkwaardigheid) het het waaruit nam. Bijvoorbeeld, als ik een xmldossier met de volgende gegevens las:


NNP de Controle Tower
ControleName>
T
8
1.0
1ber>
10RecordID>


NNP HoofdTest
testme>
R
1
1.0
1ber>
20RecordID>


this kan worden gebruikt om een lijst van DataTable te bevolken dtMod = ds. Lijsten [„eachModule“]. de lijst wordt dan gebruikt om een gridview te bevolken. ik kan de lijst via gridview dan manipuleren om rijen toe te voegen. wanneer ik de toepassing ga bewaren, gebruik ik (myfile) ds.writeXML terug naar het dossier dat ik oorspronkelijk heb geopend. dit werk -- en volgende tijd i opent het de lijst en gridview zijn correct bevolkt. nochtans is de nieuwe rij appened op het hoogste niveau van xmldossier, eerder dan wordt toegevoegd bij de aangewezen vlek in het schema (d.w.z. modules > elke module).

what die ik heb willen om weten is of dit de manier de systeemwerken is en als ik een nieuwe rij aan een lijst wil toevoegen, moet ik dat kennen en aan een knoop in het xmldossier explicitly.
thanks,
Jim
schrijven

Antwoord : dataset aan xml

Hallo,

Ik denk ik zie wat gebeurt.  U plaatst niet „produceert kolom“ modules_Id.

Zie verder:


privé nietige add_PB_Click (objecten afzender, EventArgs e)
        {

            probeer
            {
                //Assume de Dataset is vraag ds.
                De ouder van DataRow = ds. Lijsten [„modules“]. Rijen [0]; //Should doet sommigen die hier controleren te zien of er bestaat rij
                int. maxValue = 0;
                Dr. van DataRow = dtMod.NewRow ();
                   
               //Set ouderrij!!!
               Dr. [„modules_Id“] = ouder [„modules_Id“];
               

                als (dtMod.Rows.Count! = 0)
                {
                    foreach (rij DataRow in dtMod.Rows)
                    {
                        als (Convert.ToInt16 (rij [„moduleRecordID“]) > maxValue)
                            maxValue = Convert.ToInt16 (rij [„moduleRecordID]);
                    }
                }
           
                Dr. [„pathLetter“] = „R“;
                Dr. [„nodeNumber“] = „1“;
                Dr. [„subNetNumber“] = „1“;
                Dr. [„moduleRecordID“] = maxValue + 5;

                dtMod.Rows.Add (Dr.);

                mainForm.isDirty = waar;
            }
            vangst (SystemException vergist zich)
            {
                MessageBox.Show (vergis me. Bericht);
            }

        }
Andere oplossingen  
 
programming4us programming4us