>Feedback webpart

>

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”.

image

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.