Toon posts:

[ASP.NET] formulier wegschrijven in XML

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een eenvoudig formulier in asp.net gemaakt in visual studio 2005.
Ik wil de invoer van de gebruiker wegschrijven in een XML bestand.
Ik heb al aardig wat boeken doorgebladerd en 4 uur op internet gezocht en geprobeerd in VS 2005 maar nog geen 100 % werkende oplossing gevonden.
ik heb nog geen ervaring met XML dit is de 1e keer dat ik er mee aan de slag gaat.
ik heb het met een VB functie geprobeerd. Deze werkt in VB6 prima alleen in VS 2005 niet omdat deze niet alle codes ondersteunt van VB6, dus heb wat moeten aanpassen.

Sub Verzenden(ByVal Sender As Object, ByVal e As EventArgs)
Dim m_AppPath As String
m_AppPath = "C:\ENQ\"

'hier wordt het XML document aangemaakt en de waarden opgeslagen
Dim xml_document As ConfigXmlDocument
Dim values_node As System.Xml.XmlNode

xml_document = New ConfigXmlDocument

values_node = xml_document.CreateElement("Vragen_p1")
xml_document.AppendChild(values_node)

CreateNode(values_node, "Vraag1", vraag1.Text)
CreateNode(values_node, "Vraag2", vraag12.Text)
CreateNode(values_node, "Vraag3", vraag3.Text)
xml_document.Save(m_AppPath & "enq.xml")
End Sub

Private Sub CreateNode(ByVal parent As System.Xml.XmlNode, ByVal node_name As String, ByVal node_value As String)
Dim new_node

new_node = parent.OwnerDocument.CreateElement(node_name)
new_node.Text = node_value
parent.AppendChild(new_node)

End Sub

Dit is het XML resultaat:

<Vragen_p1>
<Vraag13 />
<Vraag14 />
<Vraag15 />
</Vragen_p1>

hij maakt het xml bestand wel aan, maar neemt niet de invoer van de gebruiker mee.
hij geeft ook een error als ik hem run.
hij gaat dan naar deze 2 regels:

new_node.Text = node_value
parent.AppendChild(new_node)

Weet iemand wat ik fout doet met bovenstaande code of weet iemand een veel betere en makkelijke oplossing ? zo ja, graag ! ik kom er in ieder geval niet uit.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:43

gorgi_19

Kruimeltjes zijn weer op :9

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • frosty1878
  • Registratie: Juli 2001
  • Laatst online: 24-01 11:33
Je voegt op het moment alleen een element node toe. Deze kan geen text weergeven, hiervoor moet je een een text node aanmaken en deze appenden aan je element node.

In C# wordt t zoiets ;

XmlTextNode textNode = CreateTextNode(node_value);
new_node.AppendChild(textNode);

-- keep it clean


Verwijderd

Topicstarter
frosty1878 schreef op maandag 24 april 2006 @ 17:41:
Je voegt op het moment alleen een element node toe. Deze kan geen text weergeven, hiervoor moet je een een text node aanmaken en deze appenden aan je element node.

In C# wordt t zoiets ;

XmlTextNode textNode = CreateTextNode(node_value);
new_node.AppendChild(textNode);
Dat gebeurt in mijn code in VB hier:

new_node.Text = node_value
parent.AppendChild(new_node)

Maar de site die gorgi_19 gaf die oplossing werkt wel.
die is ook stuk eenvoudiger.

Ik heb nu nog een ander probleem.
Ik heb op het formulier een aantal checkboxen staan.
ik heb daar een checkboxlist van gemaakt omdat ik een controle uitvoer dat er maar
maximaal 2 antwoorden geselecteerd mogen worden.
Maar met het wegschrijven naar XML neemt ie alleen het 1e aangeklikte antwoord mee en de rest niet. Ik wil dat ie alle antwoorden van de gebruiker meeneemt.

Dim i As Integer
Dim aant As Integer
For i = 1 To 6
If checkb(i).Checked Then
aant = aant + 1
End If
Next

dit zijn mijn checkboxen zoals ik het probleem wil oplossen (dus niet de checkboxlist):

<asp:CheckBox ID="checkb1" Text="Betrouwbare partner" runat="server" /><br />
<asp:CheckBox ID="checkb2" Text="Open communicatie" runat="server" /><br />
<asp:CheckBox ID="checkb3" Text="Prijs" runat="server" /><br />
<asp:CheckBox ID="checkb4" Text="Geleverde kwaliteit" runat="server" /><br />
<asp:CheckBox ID="checkb5" Text="Professionaliteit" runat="server" /><br />
<asp:CheckBox ID="checkb6" Text="Knowhow" runat="server" /><br />

dat is een van de dingen die ik heb geprobeerd.
maar dan zegt ie dat checkb niet is gedeclareerd. dat is aan de ene kant ook wel logisch omdat ie zoekt naar checkb, en het is natuurlijk checkb1 tot checkb6. ik heb ook geprobeerd om een index op de namen van de checkboxen te zetten, zoals je dat in de echte Visual Basic 6 zou doen, maar dat ondersteunt VS 2005 volgens mij niet.

Heeft iemand een oplossing ???? _/-\o_

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:43

gorgi_19

Kruimeltjes zijn weer op :9

Me.FindControl()

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
kan je dit misschien verduidelijken ?
waar/hoe moet ik dit toepassen ?
bij de checkboxlist ? of de losse checkboxen ?

msgbox (me.findcontrol(checkb1.checked) ) gaf niks terug

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:43

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op dinsdag 25 april 2006 @ 11:56:
[...]


kan je dit misschien verduidelijken ?
waar/hoe moet ik dit toepassen ?
bij de checkboxlist ? of de losse checkboxen ?

msgbox (me.findcontrol(checkb1.checked) ) gaf niks terug
Visual Basic .NET:
1
Dim isElementChecked as Boolean = Directcast(Me.FindControl(IdVanJeControlAlsString),CheckBox).Checked 

:)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op dinsdag 25 april 2006 @ 12:01:
[...]

Visual Basic .NET:
1
Dim isElementChecked as Boolean = Directcast(Me.FindControl(IdVanJeControlAlsString),CheckBox).Checked 

:)
Dim isElementChecked As Boolean
If isElementChecked = DirectCast(Me.FindControl("checkb1"), CheckBox).Checked = True Then
MsgBox("Checkbox1 = " & isElementChecked)
Else
MsgBox("Checkbox1 = " & isElementChecked)
End If

maar nu moet je nog steeds per checkbox controleren ? dat is hetzeldfe als:
if checkb1.checked = true then
....
end if

Ik wil het in een lus hebben dat ie een reeks van checkboxes afgaat en waarde true of false teruggeeft. maar helaas heb ik nog niet uitgevonden hoe je in Visual Studio 2005 met asp.net i.c.m vb functies een index op een object kan zetten, dus checkb(0), checkb(1) enz.
dan kan je ze met een loop langs. Zo programmeer ik dat altijd in VB6.
Iemand nog een idee ?? :)

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Stop AI Slop

offtopic:
Je kunt met de "[ code=vb.net]" en "[ /code]" tags je code een stuk overzichtelijker weergeven :)

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


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 07:43

gorgi_19

Kruimeltjes zijn weer op :9

Nee, want nu kan je doen:
code:
1
2
3
4
5
6
For I as Integer = 1 To 6

     Dim elementChecked as Boolean = Directcast(Me.FindControl("checkbox" & I.ToString()),CheckBox).Checked
    ' Further Processing

Next

[ Voor 7% gewijzigd door gorgi_19 op 25-04-2006 13:23 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
gorgi_19 schreef op dinsdag 25 april 2006 @ 13:23:
Nee, want nu kan je doen:
code:
1
2
3
4
5
6
For I as Integer = 1 To 6

     Dim elementChecked as Boolean = Directcast(Me.FindControl("checkbox" & I.ToString()),CheckBox).Checked
    ' Further Processing

Next
SUPERRRRRRRRRRRRRRRRR bedankt _/-\o_
dat is duidelijk en daar heb ik wat aan.
het werkt, thx :*)
Pagina: 1