2009-03-08 7 views
2

OK, ich bin von einem PHP-Hintergrund, aber ich habe gerade mit der Entwicklung einiger benutzerdefinierten Webparts in SharePoint beauftragt. Ich habe herausgefunden, wie man einen einfachen "Hallo Welt" -Webpart in VB erstellt und einsetzt. Gut so weit.Sharepoint Formular-Layout in VB

Worauf ich festhalte, ist ein wirklich grundlegender, blöder Punkt - wie zur Hölle lege ich Dinge in einem VB Webpart dar?

Ein Beispiel ist hier ein Label und eine Textbox:

protected overrides sub createchildcontrols() 
mybase.createchildcontrols 

dim mylabel as new label 
dim mytextbox as new textbox 

mylabel.text ="My label text" 
mytextbox.text ="My textbox" 

me.controls.add(mylabel) 
me.controls.add(mytextbox) 

Wie würde ich zum Beispiel mylabel und meine Textbox auf verschiedenen Linien zu erscheinen bekommen, anstatt einer nach dem anderen ausgeführt wird, wie sie tun jetzt? In PHP würde ich sie einfach in ein paar Zeilen umbrechen, aber wie mache ich das hier?

Antwort

2

Es gibt eine Reihe von Möglichkeiten. Am einfachsten, wenn Sie möchten, dass die Steuerelemente in verschiedenen Zeilen angezeigt werden, fügen Sie ein ASP.net LiteralControl mit einem BR-Tag zwischen ihnen hinzu.

Abgesehen davon können Sie immer die ASP.net Formatierungssteuerelemente, wie Table, um Ihre Steuerelemente in Abschnitte für die Ausgabe zu brechen.

Darüber hinaus verfügt alles, was von WebControl abgeleitet wird, über die Attribute und die CssClass-Eigenschaft zum Festlegen der Formatierung auf der Grundlage von Stylesheets, die Sie verwenden können.

Die letzte und am meisten anpassbare, aber am schwierigsten zu wartende und zu ändernde Methode wäre es, die Render-Methode des Webpart zu überschreiben und Ihren HTML-Code vollständig manuell im WebPart zu generieren.

Alternativ könnten Sie dies vollständig verwerfen und die SmartPart verwenden ASP.net-Benutzersteuerelemente für die Verwendung in SharePoint zu entwickeln, gibt Ihnen die Optionen zum Verwenden der Visual Studio Designer-Tools zum Layout Ihrer Steuerelemente auf dem Formular.

+0

Für jetzt haben Sie meine geistige Gesundheit nur mit der LiteralControl-Option gespeichert. Es reicht mir, sofort den benötigten Webpart zu produzieren. Längerfristig, da es komplexere Webparts zu erstellen gibt, werde ich die SmartPart-Option ausprobieren. – sonniesedge

1

Sie sollten die Render() - Methode überschreiben. Standardmäßig werden bei dieser Methode alle untergeordneten Steuerelemente gerendert, die Sie in der CreateChildControls() -Methode hinzugefügt haben. Durch Überschreiben können Sie jedoch zusätzliche HTML-Elemente um die Steuerelemente schreiben.

I-Code in der Regel in C#, aber ich denke, das folgende Beispiel in VB funktionieren soll:

Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter) 
    writer.Write("<h1>Custom webpart rendering</h1>") 
    me.mylabel.RenderControl(writer) 
    writer.Write("<br />") 
    me.myTextbox.RenderControl(writer) 
End Sub 

es versucht ...

1

Ich habe für eine ASP-Web-Teile entwickelt. NET-Site mit dem standardmäßigen Web-Benutzersteuerungsmodell, das Ihnen Zugriff auf den VS-Designer gewährt und bedeutet, dass Ihre Benutzeroberfläche Standard-HTML-Code sein kann. ASP.NET fügt das UserControl dann zur Laufzeit in ein GenericWebPart ein, um es in einer WebParts-Site zu hosten.

Ich weiß, dass Sharepoint nicht dieses Modell aus der Box nicht unterstützt, aber ich habe gerade diese, die Ihnen helfen könnten ...

http://weblogs.asp.net/jan/archive/2006/12/02/announcing-the-return-of-the-smartpart.aspx

0

Smart-Teil (oder eine Variante davon) ist der einfachste Weg zu gehen. Warum mit dem Rendern von Direkt-HTML umgehen, wenn Sie eine Benutzerkontrolle leichter entwickeln können?

Plus, wenn Sie sind kein Experte in VB, Visual Studio Designer wird dazu beitragen, mit Benutzer erstellen steuert

0

Vielen Dank für alle Antworten. Ich bin mit EvilGoatBobs Lösung als am einfachsten sofort zu implementieren gegangen.

Dies ist mein erstes Mal auf StackOverflow und Ihre hilfreiche Antworten haben es eine wirklich gute Einführung in die Website gemacht! :)