Redigering af nestede dataset
Jeg har en XML-fil jeg har indlæst i et datasæt.XML-filen består af en masse image-records som disse:
-------------------------
<image>
<filename>billede.jpg</filename>
<height>640</height>
<width>480</width>
<description>Lidt tekst</description>
<comments>
<comment name="Jens Jørgen" date="10-06-2003 12:34">Sejt billede!</comment>
<comment name="Bo Ib" date="10-06-2003 16:34">Endnu en kommentar</comment>
</comments>
</image>
<image>
<filename>billede2.jpg</filename>
<height>640</height>
<width>480</width>
<description/>
<comments/>
</image>
-------------------------
Lad os nu sige at jeg gerne vil tilføje en <comment> til <comments>.
Ved at bruge select-kommandoen på datasættet kan jeg sagtens finde en post jeg vil tilføje en comment til. Posten gemmer jeg i matches[]. Dvs. jeg kan hente den første (og eneste) række blandt comments således:
DataRow comments = matches[0].GetChildRows(ds.Relations["image_comments"])[0]; //Indeholder alle <comment> i en <image>
Herefter kan jeg fint oprette en nye datarow jeg vil tilføje til datasettet vha.
dr = comments.GetChildRows(ds.Relations["comments_comment"])[0].Table.NewRow();
<...tilføj data til dr...>
dr.SetParentRow(comments,ds.Relations["comments_comment"]); //faktisk ikke sikker på om denne linje er nødvendig
comments.GetChildRows(ds.Relations["comments_comment"])[0].Table.Rows.Add(dr);
Problemet opstår når jeg gerne vil tilføje til den post der ikke indeholder nogen <comment> i forvejen (som fx. den sidste post i XML-eksemplet).
Jeg forsøgt en masse krumspring for at oprette en ny <comment> manuelt og tilføje, men uden held. Jeg har jo ikke en række jeg kan basere en NewRow() på.