webForumDet fria alternativet

Hjälp översätta ASP ...

.NET

6 svar · 619 visningar · startad av Travoni

Medlem sedan okt. 20041 556 inlägg
Frågan#1

Hej, hur skulle denna funktion kunna översättas till .net?

Function Path(cmd, p)
Dim node(4)
Dim nodes

    Set rs = Server.CreateObject("ADODB.Recordset")
    Set nodes = Server.CreateObject("Scripting.Dictionary")
    
    rs.Open cmd
    Do Until rs.EOF 
	
        node(0) = rs("pageid")
        node(1) = rs("parentpageid")
        node(2) = rs("linktext")
        node(3) = rs("url")
        node(4) = rs("target")
        
        nodes.Add CStr(node(0)), node
        
        p.Value = rs("sp_parent_pageid").Value 
        rs.Close 
        rs.Open cmd    
    Loop
    rs.Close 

    Set Path = nodes
End Function

Jag har börjat här, men jag har fastnat... :)

    Private Function path() As StringDictionary
        Dim queryString As String = "SELECT pageid, parentpageid, linktext, url, target FROM pages WHERE parentpageid = 0 ORDER BY parentpageid"
        Dim node(4) As String
        nodes = New StringDictionary()
        Dim ds As New DataSet
        Dim da As New MySqlDataAdapter
        Dim connection As New MySqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings("connectionString").ConnectionString)
        command = New MySqlCommand(queryString, connection)
        command.CommandText = queryString
        da.SelectCommand = command
        connection.Open()
        da.Fill(ds, "pages")

        For Each r As DataRow In ds.Tables("pages").Rows
            node(0) = r.Item(0)
            node(1) = r.Item(1)
            node(2) = r.Item(2)
            node(3) = r.Item(3)
            node(4) = r.Item(4)
            nodes.Add(CStr(r.Item(0)), node.ToString)
            'Public Prop PageId as Long
            PageId() = r.Item(1)
        Next
        connection.Close()
        Return nodes
    End Function
Medlem sedan dec. 19996 721 inlägg
#2

Frågan är lite vad du är ute efter. Den returnerade DataTable:n innehåller ju egentligen det du behöver.

Som ren info så är det i och för sig ingen toppenlösning om man vill ha en ren och effektiv arkitektur, men vad du gör beror ju lite på vad du vill ha.

En bra lösning skulle exempelvis:

-Flytta ut databaskopplingen till ett separat datalager
-Använda en egen klass för sidinformationen (PageInfo) som fylls på av/från datalagret
-Returnera en IDictionary<int,PageInfo> (generisk dictionary med int (pageid är väl int?) som nyckel). IDictionary(Of Integer,PageInfo) i VB.NET

Medlem sedan okt. 20041 556 inlägg
#3

Du har säkert rätt emission. Men jag fattar inte hur jag skall gå vidare, eftersom att jag inte är helt säker på .net's alla funktioner.
Här är en länk till hela menyfunktionen "jag" gjort för länge sedan.
http://www.webforum.nu/showthread.php?p=1186636#post1186636

Alltså, det som det hela skall göra är att visa en meny rekursivt samt öppna hela noden vars submenyer är öppna.

[B]Bilar[/B]
      Volvo
      [B]Saab[/B]
            99
            [B]95[/B]
      Fiat
Båtar
Flygplan
Medlem sedan okt. 20041 556 inlägg
#4

Något litet tips kanske?

Nägon som har en liten hint...? Jag vet inte i vilken ända jag skall börja.
Funkar det att endast (efter db-anropet) använda Datatablen med select()-utryck kanske?

Det är inte mega-mycket som skall visas kanske max 70 noder då borde det gå att moffa in allt i en datatable som jag väljer ut valda delar ur eller...?
Jag googlade lite på IDictionary utan större framgång.

Medlem sedan okt. 20041 556 inlägg
#5

Inget tips på hur jag kan gå vidare?

Medlem sedan dec. 19996 721 inlägg
#6

Sorry att jag glömde bort dig.

Det råkar inte vara så att du skulle kunna använda ASP.NETs TreeView-kontroll för ändamålet? Om du dessutom kombinerar det med CSS Adapters, så kan du med CSS-filer styra utseendet så att det inte blir så TreeView-aktigt.

http://www.asp.net/CSSAdapters/TreeView.aspx

Medlem sedan okt. 20041 556 inlägg
#7

Ok, det är kanske ett alternativ, men det skulle också vara nice å lära sig hur jag kan göra med en dictionary och asp.net

251 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
115 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)