Jag håller på att utveckla webbplatser med VB.NET där jag sparar min information i XML. En listbox har ju attributet .Sorted som är en helt vanlig boolean. Du kan ju alltid ladda upp det i ett Dataset och sen använda DataView.Sort() Ja, jag har inte kommit igång med ett dataset men det vored antagligen det bästa :) <code> Finfin kod och jag fattar principen, förutom att just sort inte fungerade i det här fallet. Omvandlingen var inte giltig...? <code> I VB.NET fungerar det säkert alldeles utmärkt men om du ska göra en listbox i en webapplikation så finns inte det attributet med av någon anledning. Jag använde ditt XML. Då fick jag ett fel på dv.sort = "C1". "Den angivna omvanlingen är inte giltig" Dåligt exempel från mig. Dataset-klassen blir nog förvirrad av att kolumnerna heter Då fick jag inget felmeddelande :) Det är mycket enklare än vad du tror :) Tack för hjälpen!Bokstavsordning med XML
Ofta hämtar jag upp infon i olika behållare så som listboxar och liknande, men problemet jag har har att jag skulle vilja sortera informationen! Har jag en listbox med ett antal personer i så skulle jag vilja få dem i bokstavsordning. Det finns ingen funktionalitet i en listbox som sorterar infon vad jag vet.
Finns det något smidigt sätt att göra det på? Kan man sortera infon redan när man hämtar den från xml-filen kanske? Nedan kommer ett exempel på hur jag hämtar upp infon.
Det jag är ute efter är en motsvarande funktion som i SQL; SORT BY. Jag vet att jag kan använda mig av XSL-filer men är inte så förtjust i det..
-----------------
EX:
Dim xml as new xmldocument
Dim xmlnod as xmlnode
xml.load(server.mappath("..."))
xmlnod = xml.selectsinglenode("....")
------------------
Tacksam för hjälp!Sv: Bokstavsordning med XML
Men du kanske är ute efter en mer sofistikerad sortering än så?Sv: Bokstavsordning med XML
Sv:Bokstavsordning med XML
Sv: Bokstavsordning med XML
Dim ds As New Data.DataSet
ds.ReadXml("C:\test1.xml")
Dim dv As New DataView(ds.Tables(0))
dv.Sort = "C1"
Dim newTable As DataTable = ds.Tables(0).Clone
Dim i As Integer
For i = 0 To dv.Count - 1
newTable.ImportRow(dv(i).Row)
Next
Dim newDataset As New DataSet
newDataset.Tables.Add(newTable)
TextBox1.Text = newDataset.GetXml()
</code>
<code>
<root>
<Tbl1>
<C1>B</C1>
<C1>B</C1>
<C1>B</C1>
</Tbl1>
<Tbl1>
<C1>A</C1>
<C1>A</C1>
<C1>A</C1>
</Tbl1>
<root>
</code>Sv:Bokstavsordning med XML
Sv: Bokstavsordning med XML
Dim myListBox As ListBox
myListBox.Sorted = True
</code>
Ovanstående kodsnutt fungerar alldeles utmärkt i VB.NET och gör en stigande alfanumerisk sortering av innehållet.Sv:Bokstavsordning med XML
Sv:Bokstavsordning med XML
Sv: Bokstavsordning med XML
C1, C1, C1.. Testa detta i stället:
<code>
<root>
<Tbl1>
<C1>B</C1>
<C2>B</C2>
<C3>B</C3>
</Tbl1>
<Tbl1>
<C1>A</C1>
<C2>A</C2>
<C3>A</C3>
</Tbl1>
</root>
</code>Sv:Bokstavsordning med XML
Jag fattar principen men hur går jag tillväga för att sedan koppla infon till en listbox? i exemplet får jag ju ner hela xmlfilen men om jag bara vill ha infon inuti noderna...?Sv: Bokstavsordning med XML
ListBox1.DataSource = newTable
ListBox1.DataValueField = "C1"
ListBox1.DataTextField = "C2"
ListBox1.DataBind()
Jag tror du skulle spara mycket tid på att bli vän med dokumentationen till .NET ;)Sv:Bokstavsordning med XML
Jo, jag vet att jag borde läsa mer men jag är för otålig :)