>
Laatst kreeg ik de vraag om elke werkruimte te voorzien van een “feedbackmogelijkheid”. Het moest de bedoeling zijn dat de bezoeker van de werkruimte snel en eenvoudig feedback kan geven over de werkruimte. Ideale case voor een eenvoudige custom webpart zo leek me.
De webpart moet een variabele omschrijving bevatten, een tekstvak en een knop om de tekst te versturen. De gegevens worden dan opgeslagen in een custom list waar de geïnteresseerden zicht kunnen op abonneren zodat ze op de hoogte blijven van de feedback.
In Visual Studio maken we een nieuw project “FeedbackWebPart”.
De webpart bevat 3 properties die men moet kunnen editeren. Je kan dit door het WebBrowsable attribuut toe te voegen aan de properties:
Private _feedbackDescription As String
<WebBrowsable(True), _
Personalizable(True), _
Category("Feedback instellingen"), _
DisplayName("Beschrijving"), _
WebDisplayName("Beschrijving"), _
Description("Vul hier eventueel een beschrijving in over deze feedbackmogelijkheid. Dit wordt weergegeven bovenaan het ingavevenster.")> _
Public Property FeedbackDescription() As String
Get
Return _feedbackDescription
End Get
Set(ByVal value As String)
_feedbackDescription = value
End Set
End Property
In de functie CreateChildControls maken we de webpart:
Protected Overrides Sub CreateChildControls()
MyBase.CreateChildControls()
‘errorlabel
labelErrorText.ForeColor = Color.Red
labelErrorText.Visible = False
‘eventueel een beschrijving meegeven.
labelDescription.Text = Me.FeedbackDescription
‘textvak opmaken
With textboxFeedback
.TextMode = TextBoxMode.MultiLine
.Rows = 5
.Columns = 40
End With
‘text van de knop instellen
With buttonSendFeedback
.Text = Me.FeedbackButtonText
End With
‘eventhandler toevoegen aan de knop
AddHandler buttonSendFeedback.Click, AddressOf SendFeedback
‘controls toevoegen
Me.Controls.Add(labelDescription)
Me.Controls.Add(Me.GetSeparator)
Me.Controls.Add(textboxFeedback)
Me.Controls.Add(Me.GetSeparator)
Me.Controls.Add(buttonSendFeedback)
End Sub
Bij het klikken op de feedback button moet er een item in de lijst worden weggeschreven. We schrijven de data weg in de lijst die men opgeeft in de paramters:
If Me.textboxFeedback.Text <> String.Empty Then
Dim mySite As SPWeb = SPContext.Current.Web
Dim listItems As SPListItemCollection = mySite.Lists(Me.ListName).Items
Dim item As SPListItem = listItems.Add()
item("Title") = "Feedback"
item("Feedback") = Me.textboxFeedback.Text
item.Update()
Me.Complete()
End If
De volledige source code kan je hier vinden.