webForumDet fria alternativet

FreeMan ber om hjälp

.NETur .NET

9 svar · 347 visningar · startad av freeman

Medlem sedan juni 200327 inlägg
Frågan#1

Hej

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.

/mvh Niclas S

Medlem sedan sep. 20011 914 inlägg
#2

Använder du någon typ av datakälla?

Medlem sedan juni 200327 inlägg
#3

Vad menar du?

Medlem sedan sep. 20011 914 inlägg
#4

Typ en xml fil, sqlserver, access etc. En databas alltså, där du har uppgifterna lagrade. Eller är de statiska så att de kan ligga direkt i koden.

Medlem sedan juni 200327 inlägg
#5

De lagras i en xml fil

Medlem sedan sep. 20011 914 inlägg
#6

Och hur ser xml filen ut.

Medlem sedan juni 200327 inlägg
#7

Utan några inlaggda projekt ser den ut så här

<?xml version="1.0" encoding="ISO-8859-1"?>
<artiklar>

</artiklar>

Det är en xsl fil som läggar in projekten i xml filen

Medlem sedan juni 200327 inlägg
#8

Finns det något lätt sätt att kunna ta bort en specifik artikel i xml filen?

Medlem sedan sep. 20011 914 inlägg
#9

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:

<?xml version="1.0" encoding="utf-8" ?> 
<root>
   <person>
      <name>Eva</name>
      <email>eva@eva.se</email>
      <phone>012-12345</phone>
   </person>
   <person>
      <name>Ida</name>
      <email>ida@ida.se</email>
      <phone>012-23456</phone>
   </person>
   <person>
      <name>Uno</name>
      <email>uno@uno.se</email>
      <phone>012-34567</phone>
   </person>
   <person>
      <name>Maria</name>
      <email>maria@maria.se</email>
      <phone>012-45678</phone>
   </person>
   <person>
      <name>Evert</name>
      <email>evert@evert.se</email>
      <phone>012-56789</phone>
   </person>
</root>

och i .aspx filen

<form runat="server">
   <asp:TextBox ID="tbName" Runat="server"/><br/>
   <asp:TextBox ID="tbEmail" Runat="server"/><br/>
   <asp:TextBox ID="tbPhone" Runat="server"/>
</form>

Då har jag gjort så här i code-behind filen

'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. :)

Medlem sedan juni 200327 inlägg
#10

Vilken är code-behind filen?
Borde det inte gå att göra så här.

OBS detta är inte kodenligt utan bara hur det ser ut i mitt huvud och förhoppningsviss kan någon förklara hur man omsätter det i kod.

IF [<xsl:value-of select="kontakt" = "Johanna"] write - 08 - 123 456 78 - johanna@johanna.se ANDIF [<xsl:value-of select="kontakt" = "Ambkjörn"] write - 020 - 123 234 34 - ambjörn@ambjörn.se

Finns det ingen sådan där enkel lösning?
Det rör sig om 2 kontaktpersoner

Jag har gjort checkboxex och givit dem ids, "johanna" och "ambjorn"

138 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)