Först tack för att jag fick hjälp med mitt textbox problem.
Eftersom jag kan behöva en hel del hjälp startar jag en tråd som jag kommer bygga på när jag får fler frågor.
Jag har gjort ett formulär som skapar en sida med all info man skrivit in i formuläret men nu undrar jag om det går att göra så att om det t.ex. står Johanna i textboxen kontaktman att hennes e-mail och tlfn kommer upp automatiskt?
Eller är det kanske bättre att använda sig utav kryssrutor, det rör sig om 5-7 olika kontaktmän. Isf hur gör jag då? hänvisa gärna till ett klart script som jag kan anpassa eftersom jag inte kan asp.net utan läser ett script och förstår utifrån det.
Ok, tog lite tid att göra i ordning. Eftersom jag tycker det är lite onödigt att göra en postback för att hämta datan
så lägger jag istället till ett javascript med datan och som jag istället kallar på när något skrivs in i textboxen.
Säg att din xml fil ser ut så här:
'Importerar de nödvändiga namespacen
Imports System.Xml.Serialization
Imports System.IO
Public Class clientscript : Inherits System.Web.UI.Page
Protected WithEvents tbName As TextBox
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'anropar grr suben
grr()
'Ger textboxen tbName clientattributet onchange
tbName.Attributes("onchange") = "getData()"
End Sub
Sub grr()
Dim serializer As New XmlSerializer(GetType(root))
Dim fsGrr As New FileStream(Server.MapPath("clientscript.xml"), FileMode.Open)
Dim objContactPerson As root = CType(serializer.Deserialize(fsGrr), root)
fsGrr.Close()
Dim objPerson As rootPerson
'name array
Dim name As String = "nArray = new Array();"
'email array
Dim email As String = "eArray = new Array();"
'phone array
Dim phone As String = "pArray = new Array();"
Dim counter As Integer = 0
For Each objPerson In objContactPerson.Items
name &= "nArray[" & counter & "] = '" & objPerson.name & "';"
email &= "eArray[" & counter & "] = '" & objPerson.email & "';"
phone &= "pArray[" & counter & "] = '" & objPerson.phone & "';"
counter += 1
Next
Dim takeout As String = "var name = document.getElementById(""tbName"").value;name = name.toLowerCase();"
takeout &= "for(var i = 0; i < nArray.length; i++){if(nArray[i].toLowerCase() == name)"
takeout &= "{document.getElementById(""tbEmail"").value = eArray[i];document.getElementById(""tbPhone"").value = pArray[i];}}"
Dim scriptString As String = "<script language=""JavaScript""> function getData() {"
scriptString &= (name & email & phone & takeout)
scriptString &= "}</script>"
If (Not IsClientScriptBlockRegistered("getData")) Then
RegisterClientScriptBlock("getData", scriptString)
End If
End Sub
End Class
<XmlRootAttribute("root")> _
Public Class root
<XmlElementAttribute("person")> _
Public Items() As rootPerson
End Class
Public Class rootPerson
Public name As String
Public email As String
Public phone As String
End Class
Vad jag gör är att jag skapar en class som representerar xml filen, i koden heter den "root". Sen i "grr" suben så hämtar jag
in datan från xml filen genom XmlSerialization och fyller upp classen "root" med datan. Sen skapar jag tre stycken javascript
arrays och fyller i for each loopen upp dessa med datan. Sen skapar jag resten av javascript funktionen och därefter lägger
jag till javascriptet til sidan. Blev kanske lite mycket på en gång. :)