Hi,
ich bin dabei Daten aus einer Datenbank auf einer SharePoint Seite mittels eines Webparts darzustellen. Konkret geht es darum, alle Unterwebs einer Webanwendung anzuzeigen. Da die Unterwebs auch nochmal Unterseiten haben können, will ich das in einer Treeview machen. Die Adresse einer Seite wäre also ein Oberpunkt und alle weiteren Seiten mit dem selben URL wären unterhalb des Oberknotens.
Ich kann eine Treeview erzeugen und ich kann die Datenbankabfrage machen. Es hakt bei mir aber dabei, die Daten in die Treeview zu bekommen.
Hier mal mein bisheriger Code:
So wie ich das im Moment habe, wird die Treeview erzeugt und jeder URL, also auch diejenigen der Unterseiten als Oberknoten dargestellt. Mit dem Schleifenindex i kann ich die Anzahl der Oberknoten bestimmen. Im Moment wäre also ein Oberknoten vorhanden, den man aufklappen kann. Es wird aber noch in jeden Oberknoten jede vorhandene Seite als Unterknoten geschrieben. Mit dem Index j kann ich angeben, wie oft die Unterpunkte jeweils angezeigt werden. Im Moment wird also jeder Unterpunkt einmal angezeigt.
Ich weiss nicht so recht weiter, wie das anstelle, dass z.B. ein 'client/asdf-testseite' als Unterpunkte sowas wie 'client/asdf-testseite/asdf-test-unterseite' hat.
Ich arbeite mit dem Visual Studio 2005.
Hoffentlich hab ich keine relevante Info vergessen und mich verständlich ausgedrückt.
Ich würd mich echt freuen, wenn mir jemand etwas unter die Arme greifen könnte =)
Vielen Dank schonmal und Grüße
v:x
ich bin dabei Daten aus einer Datenbank auf einer SharePoint Seite mittels eines Webparts darzustellen. Konkret geht es darum, alle Unterwebs einer Webanwendung anzuzeigen. Da die Unterwebs auch nochmal Unterseiten haben können, will ich das in einer Treeview machen. Die Adresse einer Seite wäre also ein Oberpunkt und alle weiteren Seiten mit dem selben URL wären unterhalb des Oberknotens.
Ich kann eine Treeview erzeugen und ich kann die Datenbankabfrage machen. Es hakt bei mir aber dabei, die Daten in die Treeview zu bekommen.
Hier mal mein bisheriger Code:
Code:
{
// Verbindung zur Datenbank aufbauen
SqlConnection con = new SqlConnection(
"Data Source=/*hier ServerIP rein*/;" +
"Initial Catalog=SharePoint_Content_NameDerWebanwendung;Connect Timeout=30;" +
"Trusted_Connection=yes");
// Verbindung öffnen
con.Open();
// SQL-Statement erzeugen
string strSQL = "SELECT distinct a.FullUrl " +
"FROM dbo.Webs a, dbo.Webs b " +
"WHERE a.FirstUniqueAncestorWebId = b.FirstUniqueAncestorWebId " +
"AND a.FullUrl LIKE ('client%') " +
"ORDER BY FullUrl asc";
// Command-Objekt erzeugen und Statement übergeben
SqlCommand cmd = new SqlCommand(strSQL, con);
// Reader erzeugen
SqlDataReader dr = cmd.ExecuteReader();
// Treeview erzeugen
TreeView tr = new TreeView();
tr.Size = this.ClientSize;
/* Hier denke ich, müsste ermittelt werden, wie groß die TreeNode
Arrays überhaupt sein sollen. Da Oberknoten wie 'client/asdf-testseite'
aussehen, könnte man vielleicht irgendwie zählen, wie viele DB-Einträge
nur ein einziges Slash haben, und diese Zahl für das Array nehmen */
TreeNode[] tn = new TreeNode[50];
TreeNode[] tcn = new TreeNode[50];
while (dr.Read())
{
for (int i = 0; i < 1; i++)
{
tn[i] = new TreeNode();
tn[i].Text = (dr["FullUrl"].ToString());
tr.Nodes.Add(tn[i]);
tn[i].Collapse();
for (int j = 0; j < 1; j++)
{
tcn[j] = new TreeNode();
tcn[j].Text = (dr["FullUrl"].ToString());
tr.Nodes[i].Nodes.Add(tcn[j]);
}
this.Controls.Add(tr);
}
string satz = dr.ToString;
int zaehler = 0;
char zeichen = '/';
for (int i = 0; i < satz.Length; i++)
{
if (zeichen == satz[i])
zaehler++;
}
}
// Reader und Command schließen
dr.Close();
con.Close();
}
So wie ich das im Moment habe, wird die Treeview erzeugt und jeder URL, also auch diejenigen der Unterseiten als Oberknoten dargestellt. Mit dem Schleifenindex i kann ich die Anzahl der Oberknoten bestimmen. Im Moment wäre also ein Oberknoten vorhanden, den man aufklappen kann. Es wird aber noch in jeden Oberknoten jede vorhandene Seite als Unterknoten geschrieben. Mit dem Index j kann ich angeben, wie oft die Unterpunkte jeweils angezeigt werden. Im Moment wird also jeder Unterpunkt einmal angezeigt.
Ich weiss nicht so recht weiter, wie das anstelle, dass z.B. ein 'client/asdf-testseite' als Unterpunkte sowas wie 'client/asdf-testseite/asdf-test-unterseite' hat.
Ich arbeite mit dem Visual Studio 2005.
Hoffentlich hab ich keine relevante Info vergessen und mich verständlich ausgedrückt.
Ich würd mich echt freuen, wenn mir jemand etwas unter die Arme greifen könnte =)
Vielen Dank schonmal und Grüße
v:x