Godmorgon.
Nu har jag sovit på denna tråd och jag har inte något annat val än att dela upp mitt problem i sektioner. Hoppas att vi kan lösa mitt problem så smidigt som möjligt. Jag delar upp sektionerna i orginalkod (Macces) och min nya (C#)
Sektion 1: (Deklaration av variablar)
- Inga komentarer.
[blue]
intLnkId = Request.Querystring("lnkid")
intQstParentId = Request.Querystring("parid")
strScriptname = Request.ServerVariables("SCRIPT_NAME")
arrLinks = GetRows("SELECT page_id,parent_page_id,linktext FROM tbl_links ORDER BY linktext ")
intGrpId = 1 'de länkar som ska vara på nivå ett är barn till grupp 1 (alltså parent_page_id i databasen är = 1)
[/blue]
[red]
// Denna använder jag inte än.
private string lnkId = null;
// Här hämtar jag Querystringen["parent"].
private StringCollection sc = getQuery();
// Här anger jag vilket element som är toppparent.
int groupId = 1;
// Här deklarerar jag min datakälla
public ArrayList gCollection;
// Här hämtar jag min fil som allt ska länkas till
public string Path = HttpContext.Current.Request.CurrentExecutionFilePath;
// Här deklarerar jag min tabell som länkarna placeras i.
public Table menuTable = new Table();
[/red]
Sektion 2. Kör igång med byggandet
- Inga komentarer.
[blue]
If IsArray(arrLinks) Then
Response.Write "<table cellspacing='0' cellpadding='1' class='mTable'>"&VbCrlf
Call LinkTree(intGrpId,0)
Response.Write "</table>"
Else
Response.Write "Finns inga länkar"&VbCrlf
End If
[/blue]
[red]
if (gCollection.Count > 0)
{
this.MakeMenuEntrys(groupId, 0);
}
[/red]
Sektion 3. Den rekursiva (macces har här mer funktioner som jag kommer att lägga till senare)
- Här är det stora problemet, Jag anser ju att jag har samma frågor i min if-sats som macce.
Alltså OM objectet som körs parentID = Parent(som skickats in i funktionen) OCH OM objectet som körs parentID = groupId(1) ELLER OM Parent(som skickats in i funktionen) finns i Querystringen["parent"]
[blue]
Sub LinkTree(intParent,intIndent) : Dim X,Z
For X = 0 To Ubound(arrLinks,2)
[b]If arrLinks(1,X) = intParent AND (Cstr(arrLinks(1,X))=Cstr(intGrpId) OR instr(","&qstParentId&",",","&intParent&",")>0) Then[/b]
strPid=""
Response.Write VbCrlf & "<TR><TD bgcolor='#ffffff'>"
For Z = 1 To intIndent
Response.Write("<img src='1px.gif' width='6' height='8' align='left'>")
Next
IF intIndent=0 then
Sublink=arrLinks(0,X)
IF cstr(qstLnkId) = cstr(arrLinks(0,X)) THEN
strClass = "catlinkactive"
strBullet = "<img src='icon-active-dot.gif' border=0 align='left'>"
ELSE
strClass = "catlink"
strBullet = "<img src='icon-inactive-dot.gif' border=0 align='left'>"
END IF
ELSE
For Z = 1 To intIndent : strPid=strPid&split(qstParentId,",")(Z-1) & "," : next
Sublink=strPid & arrLinks(0,X)
IF cstr(qstLnkId) = cstr(arrLinks(0,X)) THEN
strClass = "sublinkactive"
strBullet = "<b>- </b>"'kan även vara bild som ovan
ELSE
strClass = "sublink"
strBullet = "- "
END IF
END IF
Response.Write("<a href='"&scriptname&"?lnkid="&arrLinks(0,X) &"&parid="&Sublink&"' class='"&strClass&"'>"&VbCrlf)
Response.Write(strBullet & arrLinks(2,X)& "</a></TD></TR>"&VbCrlf)
Call LinkTree(arrLinks(0,X),intIndent + 1)
End If
Next
End Sub
[/blue]
[red]
private void MakeMenuEntrys(int Parent, int indent)
{
foreach( UI.Group g in gCollection)
{
[b]if(g.ParentId == Parent && g.ParentId == groupId || sc.IndexOf(Parent.ToString()) > -1)[/b]
{
HyperLink hl = new HyperLink();
hl.Text = g.Headline;
hl.NavigateUrl = Path + "?parent="+g.Id;
TableRow tr = new TableRow();
TableCell tc = new TableCell();
tc.Controls.Add(hl);
tr.Controls.Add(tc);
menuTable.Controls.Add(tr);
this.MakeMenuEntrys(g.Id, indent + 1);
}
}
}[/red]
Min datakälla hittas tidigare i tråden, om det skulle vara något fel på den??
Attans, jag vill så gärna att denna ska fungera.
Brainstorma gärna med mig om vad som kan vara fel.
mv icaaq